2016-08-01 39 views
3

我想设置一个条件segue(在Swift/Xcode中,带有Heroku托管的分析服务器框架),只有当前用户没有注销时才会执行。如果用户没有注销,它可以正常工作。但是,即使用户注销,segue仍会运行。这是一个基本的代码设置。Swift/Xcode:为什么PFUser.currentuser()不会返回零如果注销?

我拨打的用户通过注销:

PFUser.logoutinbackground() 

然而,SEGUE:

If PFUser.currentuser() != nil { 

//perform segue 
} 

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

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

这工作适当,返回PFUse.currentuser()?用户名日志不会返回零。有没有什么特别的错误让它像这样(即会导致任何问题?)。另外,为什么它不会返回为零的第一版segue代码?这是否与我称为PFUser.loginoutinbackground()而不是PFUser.logout()(后者导致应用程序因某种原因崩溃)相关?

回答

2

PFUser.logOut();这会立即记录用户。当您致电PFUser.logoutinbackground()时,不会立即将用户登出。

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

//perform segue 
} 

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

更新

确保你没有这个在你的代码

PFUser.enableAutomaticUser() 
+0

应用程序使用此命令在我关闭(PFUser.logOut())。你有什么想法,为什么这可能是这种情况?不知道为什么它有麻烦。 –

+0

有没有错误 –

+0

是的。但是我现在不在我的电脑中,它包含了该应用程序。我会尽快发布。感谢您的帮助 –