如何在Swift中检查Parse上的对象是否为nil?

时间:2015-01-22 04:09:01

标签: swift parse-platform null

我正在使用一个允许用户连接到Instagram并与之断开连接的快速应用程序。用户连接后,我将访问令牌存储在名为instagramCredentials的列下的PFUser类中。

user["instagramCredentials"] = credentials["access_token"]
user.save()

然后,如果用户想要与Instagram断开连接,我会删除访问令牌。

user.removeObjectForKey("instagramCredentials")
user.save()

当视图加载时,我想将布尔值instagramIsConnected设置为false,除非在instagramCredentials中有访问令牌。

if user["instagramCredentials"] == nil {
        instagramIsConnected = false
} else {
        instagramIsConnected = true
}

但我在运行时收到错误

  

致命错误:在解包可选值时意外发现nil

我做错了什么?

3 个答案:

答案 0 :(得分:2)

你应该做这样的事情,你应该学习这种代码格式。它是 Swift 的基础:

  if let isConnected = user["instagramCredentials"] {
     instagramIsConnected = true
  } else {
     instagramIsConnected = false
  }

您可以在 Apple Swift 教程中找到名为“If Statement and Forced Unwrapping”的主题。

答案 1 :(得分:1)

swift 4 update

if (object["instagramCredentials"]) == nil {

//does not exist

} else {

//does exist

}

答案 2 :(得分:0)

您应该将用户[" instagramCredentials"]定义为带问号的可选项。 - >用户[" instagramCredentials"]?只有选项可以是零,而且检查值是否为零是有意义的。