如何将Firebase数据库快照与文本进行比较?

时间:2018-06-09 22:06:28

标签: swift firebase firebase-realtime-database

我正在使用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"部分?

1 个答案:

答案 0 :(得分:1)

您的代码运行正常 - 唯一的问题是 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 并将其定义为String。

另请注意,强行展开选项可能会让您遇到麻烦,如果它没有。如果您确定将填充变量,则仅强制解包。更安全的替代方案是 guard

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

如果您想要超级安全且非常时尚,请使用,如果让

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