ios - 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 的值。
如果我关闭应用程序,则循环关闭,当然我可以更改值。
解决方案
这个
ref.observe(DataEventType.value, with: { (snapshot) in
应该是单人观察
ref.observeSingleEvent(of: DataEventType.value, with: { (snapshot) in
推荐阅读
- laravel - 如何散列最后一个插入ID并设置到请求中然后保存到laravel中的db中。?
- javascript - 我在 javascript 中遇到 DOM 的问题
- scala - 如何在 Play 中获取原始请求正文?
- android - Google Play 64 位要求 Gamemaker Studio
- javascript - 角度如何使用查询列表对象?
- java - 在控制台中使用在 Eclipse 中创建的包运行代码
- javascript - 如何获得此加载屏幕效果
- java - 如何实现一种以异步方式处理服务超时的方法?
- runtime - 如何在运行时设置 Phaser 3 游戏的背景颜色?
- dependency-injection - 无法解析类型 Microsoft 扩展配置 IConfiguration 的服务