我想知道是否有人可以帮助我解决我遇到的这个恼人的错误。
在我的应用程序中,当用户注销时,我希望能够在此之前将用户的“shareLocation”属性更改为 false。
但是,它没有正确更新。
但是我注意到,当没有进行 PFUser.logOut()
函数调用时,用户的属性将在后端正确更新。
我还注意到有两种不同的注销方法:logOutinBackground
和 logOutInBackgroundWithBlock
所以我假设 PFUser.logOut()
的执行发生在保存到后台调用之前?
有人可以帮我找出这个的正确实现吗?
提前谢谢您!
相关代码片段如下。如果需要更多信息,请告诉我。
PS - 除了 prepareForSegue< 之外,我还尝试在 user!.saveInBackground()
调用之后立即调用 PFUser.logOut()
/strong> 下面的方法,并且在调用注销和 segue 之前用户仍然没有正确更新。
@IBAction func btnLogout(sender: AnyObject) {
let user = PFUser.currentUser()
user!["shareLocation"] = false
user!.saveInBackground()
performSegueWithIdentifier("logoutSegue", sender: self)
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if (segue.identifier == "logoutSegue") {
PFUser.logOut()
}
}
最佳答案
您应该使用完成 block 在后台保存,然后在完成 block 中触发注销请求。这样您就知道新状态已保存并且您可以安全注销。您还可以检查状态以确保保存有效。
关于ios - 注销之前不会保存当前用户的设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33969687/