Firebase卡在无限循环中

时间:2018-07-21 17:22:23

标签: ios swift loops firebase-realtime-database

我尝试更改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的值。

如果我关闭应用程序,则循环会关闭,当然我可以更改值。

1 个答案:

答案 0 :(得分:1)

ref.observe(DataEventType.value, with: { (snapshot) in

应该是一个观察对象

ref.observeSingleEvent(of: DataEventType.value, with: { (snapshot) in