我创建了一个带有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发表的第一篇文章,如果我不够清楚,请告诉我:)
答案 0 :(得分:0)
您正在为当前用户正确设置值,但您没有调用其中一种保存方法。
在当前用户设置新值后尝试添加PFUser.currentUser().saveInBackground()
。
答案 1 :(得分:0)
您需要在解析时保存信息。首先,我将首先为PFUser.currentUser()设置一个变量。如下所示:
var UserInfo = PFUser.currentUser()
然后您需要在后台保存您的信息。所以在你的dismissViewController之前,请用户:
UserInfo.saveInBackgroundWithBlock {
(success:Bool, error:NSError!) -> Void in
}