首页 > 解决方案 > Firebase 陷入无限循环

问题描述

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

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

标签: iosswiftloopsfirebase-realtime-database

解决方案


这个

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

应该是单人观察

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

推荐阅读