首页 > 解决方案 > 如何将 Firebase 数据库快照与文本进行比较?

问题描述

我正在使用 Firebase 在 Swift 中编写应用程序。如何将 Firebase 数据库快照与其他内容进行比较?对于他们不理解我的人,这里有一个例子:

Database.database().reference().child("users").child((Auth.auth().currentUser?.uid)!).child("Person").observeSingleEvent(of: .value) { (PersonSnap) in
let PersonID = PersonSnap.value

if PersonID == "HelloWorld" {
//Code
}
  }

我如何制作这if PersonID == "HelloWorld"部分?

标签: swiftfirebasefirebase-realtime-database

解决方案


您的代码工作正常 - 唯一的问题是PersonSnap.value可能是很多东西,所以我们需要告诉编译器它是什么。此问题假定以下 Firebase 结构

your_firebase
   users
      uid_x
         Person: "HelloWorld"

Firebase 闭包中要读取的代码将是

let PersonID = snapshot.value as! String
if PersonID == "HelloWorld" {
    print(PersonID)
} else {
    print("the string was not HelloWorld")
}

请注意,我们正在解开可选的PersonSnap.value并将其定义为字符串。

另请注意,如果它为 nil,强制展开选项可能会给您带来麻烦。仅当您确定将填充变量时才强制展开。更安全的选择是守卫

guard let myId = snapshot.value as? String else { return }
print(myId)

如果你想要超级安全和时尚,使用if let

if let thisId = snapshot.value as? String {
    if thisId == "HelloWorld" {
        print(thisId)
    } else {
        print("the string was not HelloWorld")
    }
}

推荐阅读