parsing,如何处理无效的会话?

直接从文档,它说:

PFUser#currentUser()从磁盘获取当前login的用户并返回它的一个实例。

这很好,但是,如果用户login@磁盘不是在服务器上login的用户。 可以说,无论出于何种原因,用户帐户已被删除,或由于数据库修改,会话不再有效。 这些是目前我面临的问题。

在我读过的教程中,我已经看到使用下面这行代码来检查用户是否有效,因此可以跳过应用程序的login阶段:

if let user = PFUser.currentUser() as? Subclass { // Simulate successful login } 

但是,这对我来说是一个问题,因为成功login是模拟的,但login不成功。 这是我正在处理的错误:

[错误]:无效的会话令牌(代码:209,版本:1.12.0)

所以我做的第一件事是尝试login用户,但是这个失败(我假设因为用户没有login开始),现在我被扔进应用程序立即崩溃,因为服务器所需的数据不在那里 以下是我试图处理错误代码209的方法:

 let query = PFQuery(className: "Foo") query.whereKey("Bar", equalTo: "Foo") query.findObjectsInBackgroundWithBlock { (foo, error) -> Void in if let error = error { print(error); if error.code == 209 { PFUser.logOutInBackgroundWithBlock { (error) -> Void in if let error = error { print("Okay, I'm trapped!"); } } } } } 

这个“查询”的输出如下:

 [Error]: invalid session token (Code: 209, Version: 1.12.0) Okay, I'm trapped! 

我在这里没有什么想法了,我正试图弄清楚如何在应用程序启动时正确地validation用户。 在每个查询中都必须捕获错误代码209似乎是多余的,但是如果这就是你必须做的,那么这就是你必须做的。

您可以使用同步注销。 所以即使发生错误也没关系。 如果用户再次启动应用程序,PFUser会话令牌将失效。

另外最新的Parse SDK提供了PFConstants类,它为所有可能的错误情况提供枚举。

kPFErrorInvalidSessionToken = 209.

 if (error.code == kPFErrorInvalidSessionToken) { PFUser.logOut() //Necessary pop of view controllers after executing the previous code. }