我想设置一个条件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()这一事实有关(后者导致应用程序因某种原因崩溃)?
答案 0 :(得分:2)
PFUser.logOut();
这会立即将用户注销。当您致电PFUser.logoutinbackground()
时,不会立即将用户注销。
PFUser.logoutinbackground()
if PFUser.currentuser() != nil {
//perform segue
}
logoutinbackground()
是异步的。这就是为什么上面的代码不会做你认为它应该做的事情。我总是使用PFUser.logOut();
<强>更新强>
确保您的代码中没有此内容
PFUser.enableAutomaticUser()