由于这个问题,我一直在死。
首先让我向您展示我的 Swift代码:
@IBOutlet weak var testLabel: UILabel!
@IBOutlet weak var phoneTextField: UITextField!
var dbRef : DatabaseReference!
dbRef = Database.database().reference()
if let text = phoneTextField.text, !text.isEmpty {
dbRef.child("user").observeSingleEvent(of: .childAdded) {
(snapshot) in
let phoneDB = snapshot.value as? String
self.testLabel.text = phoneDB
}
}
这是我的 Firebase数据库:
project-2ac-33
-user
-name : "user1"
-phone : 1111
-password : 1234
我想做的是:
如果我在phoneTextField
中键入任何数字
然后testLabel
向我显示1111
(Firebase中的真实电话价值)。
但是,当我运行此项目时,testLabel
会向我显示user1
(来自Firebase的值)而不是电话价值。
有人可以帮我吗?
答案 0 :(得分:6)
请改为尝试:
...
dbRef.child("user/phone").observeSingleEvent(of: .value) {
(snapshot) in
if let phoneDB = snapshot.value as? Int {
self.testLabel.text = "\(phoneDB)"
}
}
您正在阅读所有 user
个孩子,其中还包括password
和name
个节点。上面的代码只读取 所需的user/phone
值;)
另请注意,我现在使用.value
代替.childAdded
。