Ios 当前用户';在注销发生之前,不会保存的设置

Ios 当前用户';在注销发生之前,不会保存的设置,ios,swift,parse-platform,logout,Ios,Swift,Parse Platform,Logout,我想知道是否有人能帮我解决这个讨厌的问题 在我的应用程序中,当用户注销时,我希望能够在注销之前将用户的“shareLocation”属性更改为false 但是,它没有正确更新 但是我注意到,当没有调用PFUser.logOut()函数时,用户的属性将在后端正确更新 我还注意到有两种不同的注销方法:logOutinBackground和logoutinbackgroundithblock 所以我假设PFUser.logOut()的执行发生在save to background调用之前 有人能帮我找

我想知道是否有人能帮我解决这个讨厌的问题

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

但是,它没有正确更新

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

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

所以我假设
PFUser.logOut()
的执行发生在save to background调用之前

有人能帮我找出正确的实施方法吗

提前谢谢你

下面是相关的代码片段。如果需要更多信息,请告诉我

PS-我还尝试让
PFUser.logOut()紧跟在
user!之后!。saveInBackground()
调用,除了下面的prepareForSegue方法之外,用户在注销和调用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()

    }
}

您应该在后台保存一个完成块,然后在完成块中触发注销请求。这样,您就知道新状态已保存,您可以安全地注销。您还可以检查状态以确保保存成功。

尝试:

user!.saveInBackgroundWithBlock { (success: Bool!, error: NSError!) -> Void in
    if success {
        performSegueWithIdentifier("logoutSegue", sender: self)
    } else {
        NSLog("%@", error)
    }
}

因为在
saveInBackground()
完成之前,您正在注销用户