我尝试更改Firebase数据库中所有子级的值。首先,我尝试收集ID,然后更改值。
ref = DatabaseRef.changeUserRef
ref.observe(DataEventType.value, with: { (snapshot) in
if snapshot.childrenCount > 0 {
for items in snapshot.children.allObjects as! [DataSnapshot] {
let itemObject = items.value as? [String: AnyObject]
let id = itemObject?["id"]
self.ref.child(id as! String).child("status").setValue(UserStatus.userOut)
self.ref.child(id as! String).child("inDate").setValue("0000-00-00 00:00")
}
}
})
效果很好。所有值均按设置更改。但我不知道为什么应用程序会陷入此循环。如果我尝试更改任何值(例如仅在在线Firebase控制台中重写),它将再次更改为UserStatus.userOut的值。
如果我关闭应用程序,则循环会关闭,当然我可以更改值。
答案 0 :(得分:1)
此
ref.observe(DataEventType.value, with: { (snapshot) in
应该是一个观察对象
ref.observeSingleEvent(of: DataEventType.value, with: { (snapshot) in