gpt4 book ai didi

ios - Firebase 'observe' 使用不同的数据多次触发

转载 作者:行者123 更新时间:2023-11-29 11:42:02 27 4
gpt4 key购买 nike

我为某个目录设置了一个观察者,在这种情况下表示为 ref(简化的代码示例):

ref.observe(.value, with: { snap in
if snap.exists(){
let some = MyStructure(snap: snap)
print(some.date)
}
})

问题是,即使该位置 (ref) 中的数据永远不会改变,处理程序也会被调用多次(通常是 2 次),最让我烦恼的是,不同的数据仅一个字段(date 字段)。想过为什么会发生这种情况吗?


附言。我通常会删除所有观察者以获取其回调处理程序中的引用,但是,在这种情况下,我不能这样做,因为第一次调用返回的数据带有错误的 date 字段,但下一次调用往往会做对的人。

附言。我不能使用 '.observeSingleEvent' 方法,因为它使用缓存数据(我相信是由 Firebase 存储的),在这里只检索相关数据是必不可少的。

最佳答案

原因

经过一些挖掘,我发现双重触发是 Firebase SDK 的预期行为。第一个 - 用于引用的缓存快照,第二个 - 从实时数据库中检索。

如何处理

  1. isPersistenceEnabled 设置为 false。这将确保所有 .observe 调用不使用设备本地缓存的数据

  2. 用第二次调用更新数据(如果有的话)

关于ios - Firebase 'observe' 使用不同的数据多次触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45969419/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com