【问题标题】:Object = nil, but code still executes inside if statementObject = nil,但代码仍然在 if 语句中执行
【发布时间】:2016-08-05 22:35:58
【问题描述】:

我正在使用 Firebase 3.4.0 并正在执行此代码:

if snapshot.value!["username"] != nil {

        self.usernameTextField.text = "\(snapshot.value!["username"]!)"

        print("SNAPSHOT: \(snapshot.value!["username"])")

}

我正在从 Firebase 实时数据库中获取用户的用户名,对于该用户,没有提供用户名。当代码执行时,if 语句内的两行运行,但打印行打印“nil”。

我的 Firebase 数据结构:

"users": {

    "9Tjjbsj852816": {

        "Email": "test@test.com"

    }
}

如果我正在运行 if 语句并且对象为 nil,为什么 if 语句中的代码在执行?

【问题讨论】:

  • 与“用户名”键关联的值可以是字符串“nil”吗?
  • 查看我添加到问题中的 Firebase 数据结构。
  • 可能是字符串的值是“”(即空字符串)与 nil?
  • 我不明白为什么它会打印出“nil”,而不是“”
  • snapshot.value的类型是什么?也许是AnyObject?

标签: ios swift xcode firebase firebase-realtime-database


【解决方案1】:

我在别人的帮助下弄明白了!这是更新的 if 语句。我仍然无法弄清楚为什么 Xcode 将 String 视为 nil 而不是 AnyObject。

if snapshot.value?["username"] as? String != nil {

    self.usernameTextField.text = "\(snapshot.value!["username"]!!)"

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-19
    • 1970-01-01
    • 1970-01-01
    • 2021-01-16
    • 2012-01-26
    • 2020-08-02
    • 1970-01-01
    相关资源
    最近更新 更多