上传更改为Parse PFUser对象无法正常工作

时间:2015-04-08 15:03:29

标签: ios iphone swift parse-platform xcode6

我创建了一个带有Parse Log In功能的简单iPhone应用程序。然后我有一个页面,按钮链接到登录用户可以查看其个人资料的位置。

要获取此信息并将其加载到“配置文件”页面中,我从viewDidLoad()调用以下loadData()函数:

func loadData() {

    // DISPLAY PICTURE CODE
    dpImage.image = UIImage(named: "profilePlaceholder")
    dpImage.layer.cornerRadius = 50
    dpImage.layer.masksToBounds = true

    // Get and set Name and Degree
    fullNameLabel.text = PFUser.currentUser()["fullName"] as? String
    degreeLabel.text = PFUser.currentUser()["degree"] as? String

    // Check degreeYear of user and create String
    var degreeYear = String(PFUser.currentUser()["degreeYear"] as Int)

    if (degreeYear == "1") {
        degreeYear += "st Year"
    } else if (degreeYear == "2") {
        degreeYear += "nd Year"
    } else if (degreeYear == "3") {
        degreeYear += "rd Year"
    } else {
        degreeYear += "th Year"
    }

    // Get Group Contribution Rating and add % sign
    var groupContribution = String(PFUser.currentUser()["groupContribution"] as Int) + "%"

    // Set labels of cells
    emailCell.detailTextLabel?.text = PFUser.currentUser().email
    institutionCell.detailTextLabel?.text = PFUser.currentUser()["institution"] as? String
    yearOfDegreeCell.detailTextLabel?.text = degreeYear
    groupContributionCell.detailTextLabel?.text = groupContribution

}

这很好用。然后我在“个人资料”页面上有一个编辑按钮,它将(模态segue)链接到一个几乎相同的页面,但是每个属性都有文本字段而不是标签。

在此“配置文件编辑”页面上,单击“保存”将运行以下命令:

@IBAction func saveAction(sender: AnyObject) {

    PFUser.currentUser()["fullName"] = fullNameTextField.text
    PFUser.currentUser()["degree"] = degreeNameTextField.text
    PFUser.currentUser().email = emailTextField.text
    PFUser.currentUser()["institution"] = institutionTextField.text

    self.dismissViewControllerAnimated(true, completion: nil)

}

“配置文件”页面的viewDidAppear函数再次运行loadData()函数以刷新标签上的数据,从而成功将标签更新为更改的值。

BUT!我的问题是它似乎并没有真正将我的更改上传到Parse数据库。这是因为当我以相同的用户注销并重新登录应用程序时,我没有看到新的更新的配置文件属性值,而是更改它们之前的原始值。

如何将我在“编辑个人资料”页面中所做的更改推回到解析服务器?

注意:这是我向StackOverflow发表的第一篇文章,如果我不够清楚,请告诉我:)

2 个答案:

答案 0 :(得分:0)

您正在为当前用户正确设置值,但您没有调用其中一种保存方法。

在当前用户设置新值后尝试添加PFUser.currentUser().saveInBackground()

答案 1 :(得分:0)

您需要在解析时保存信息。首先,我将首先为PFUser.currentUser()设置一个变量。如下所示:

var UserInfo = PFUser.currentUser()

然后您需要在后台保存您的信息。所以在你的dismissViewController之前,请用户:

UserInfo.saveInBackgroundWithBlock {
(success:Bool, error:NSError!) -> Void in
}