提问人:Miguel Carvalho 提问时间:9/28/2023 最后编辑:Miguel Carvalho 更新时间:9/28/2023 访问量:31
如何从实时数据库中检索子项的所有密钥?
How can I retrieve all the keys from a child from Realtime Database?
问:
我在尝试获取我的孩子拥有多少个键的数量(计数)以及检索包含所有键的数组时遇到了问题。
现在,我在子“通知”下有 4 个键。每次我尝试从那个孩子那里检索密钥计数时,我不知道为什么,Firebase 会返回整数 49。有时它会给我 48 或 56 分。这是有道理的,因为即使我以某种方式从所有孩子那里得到了所有的钥匙,我仍然会比它显示的更多或更少。
运行代码后,我的文本字段中也只显示最新的键,并且拒绝按预期显示所有键。
这是我的代码:
func retrieveNotifications() {
let databaseRef = Database.database().reference()
let dataName = Auth.auth().currentUser!.uid
let ref = databaseRef.child("User_Information").child("\(dataName)").child("Notifications")
ref.observeSingleEvent(of: .value , with: { (snapshot) in
for notifications in snapshot.children {
let snap = notifications as! DataSnapshot
let key = snap.key
let value = snap.value
let count = snap.key.count
if count > 0 {
self.notificationNumber.isHidden = false
self.noNewNotificationsMessage.isHidden = true
self.notificationsText.isHidden = false
self.clearButton.isHidden = false
self.notificationNumber.text = "\(count) notifications"
self.notificationsText.text = "\(key)"
} else {
self.notificationNumber.isHidden = true
self.notificationsText.isHidden = true
self.clearButton.isHidden = true
self.noNewNotificationsMessage.isHidden = false
}
}
})
}
我已经看了几个小时的代码,非常感谢任何帮助,也许我没有看到明显的东西。
在这一点上,我已经尝试了我能想到的一切。没有任何效果。
答:
0赞
Frank van Puffelen
9/28/2023
#1
您是:
- 读取用户的通知。
- 然后循环通知。
- 然后,对于每个通知,您可以确定其密钥的长度
如果要确定 下的子节点数,则如下所示:Notifications
ref.observeSingleEvent(of: .value , with: { (snapshot) in
let count = snapshot.childrenCount
...
评论
0赞
Miguel Carvalho
9/28/2023
非常感谢,它对我的计数问题有用。非常非常感激!
评论