ios - 注销之前不会保存当前用户的设置

标签 ios swift parse-platform logout

我想知道是否有人可以帮助我解决我遇到的这个恼人的错误。

在我的应用程序中,当用户注销时,我希望能够在此之前将用户的“shareLocation”属性更改为 false。

但是,它没有正确更新。

但是我注意到,当没有进行 PFUser.logOut() 函数调用时,用户的属性将在后端正确更新。

我还注意到有两种不同的注销方法:logOutinBackgroundlogOutInBackgroundWithBlock

所以我假设 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/

相关文章:

node.js - Parse/Node.js,用户 session 管理(javascript sdk)。 Parse.User.current() 不会持续存在

ios - 发送和接收 GKTurnBasedMatch 的邀请

ios - 如何使用 AFNetworking 比较 SSL 证书

ios - 如何在 ios 中使用运行 ffmpeg 命令

swift - 在 AppDelegate 中设置 managedObjectContext

ios - 如何将委托(delegate)函数转换为 IBAction 函数

android - 如何在parse.com中获取插入行的objectId

ios - (iOS)与我的用户代理打交道会使我的应用程序被拒绝吗?

swift - 无法使用 AVCaptureDevice 发现相机

javascript - 通过云作业解析云删除行