Ios Firebase卡在无限循环中

Ios Firebase卡在无限循环中,ios,swift,loops,firebase-realtime-database,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] {

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

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

ref.observe(DataEventType.value, with: { (snapshot) in
应该是单一观察

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