Swift / Xcode:如果注销,PFUser.currentuser()为什么不返回nil?

时间:2016-08-01 20:20:18

标签: ios swift xcode

我想设置一个条件segue(在Swift / Xcode中,带有解析服务器框架,由Heroku托管),只有当前用户没有注销时才会执行。如果用户尚未注销,它将正常工作。但是,即使用户注销,segue仍将运行。这是代码的基本设置。

我通过以下方式呼叫用户注销:

PFUser.logoutinbackground()

但是,segue:

If PFUser.currentuser() != nil {

//perform segue
}

仍将执行segue。将PFUser.currentuser()打印到日志不会返回nil。如果我将条件segue代码重写为:

If PFUser.currentuser()?.username != nil {
//perform segue
}

这适当地工作,将PFUse.currentuser()?。用户名返回到日志确实返回nil。离开它是否有什么特别的错误(即这会导致任何问题吗?)。另外,为什么第一个版本的segue代码不会返回nil?是否与我调用PFUser.loginoutinbackground()而不是PFUser.logout()这一事实有关(后者导致应用程序因某种原因崩溃)?

1 个答案:

答案 0 :(得分:2)

PFUser.logOut();这会立即将用户注销。当您致电PFUser.logoutinbackground()时,不会立即将用户注销。

PFUser.logoutinbackground()
if PFUser.currentuser() != nil {

//perform segue
}

logoutinbackground()是异步的。这就是为什么上面的代码不会做你认为它应该做的事情。我总是使用PFUser.logOut();

<强>更新

确保您的代码中没有此内容

PFUser.enableAutomaticUser()