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