gpt4 book ai didi

ios - ObserveSingleEvent 效果不佳

转载 作者:可可西里 更新时间:2023-11-01 02:06:18 26 4
gpt4 key购买 nike

我的实时数据库是这样的:

enter image description here

如您所见,它只包含 1 个 child 。几分钟前,我在 RunningGames 中还有 4 个 child 。我在浏览器中删除了它们。现在调用这个时:

private lazy var runningGamesRef: FIRDatabaseReference = FIRDatabase.database().reference().child("RunningGames")
self.runningGamesRef.observeSingleEvent(of: .value, with: { (snapshot) -> Void in
for gameSnap in snapshot.children {
let id = (gameSnap as! FIRDataSnapshot).key
print(id)
}
})

它仍然打印我在浏览器中删除的那些游戏。在我的应用程序中调用 runningGameRef!.removeValues() 确实会在浏览器和 iPhone 上删除它(print(id) 是固定的)。我在不同 child 的多个 observeSingleEvent 函数上有这个错误,不仅仅是 RunningGames 的 child 。什么会导致这个烦人的错误?

RunningGames 中的一些 child 也有 child ,但他们会在应用程序中自动删除自己。但是,这些值在调用 observeSingleEvent 时仍然可见。

最佳答案

可能是您的本地缓存仍然保存着过时的信息。当您处理来自多个来源的数据时,通常会发生这种情况。

我会尝试使用 observe 而不是 observeSingleEvent。我知道这有点奇怪(如果您只想加载一次数据,这并不是您真正想要的)但这应该使您的信息保持最新。

也许通过这样做你可以只获取一次信息。

var handle: UInt = 0
handle = ref.observe(.value, with: { snapshot in
for gameSnap in snapshot.children {
let id = (gameSnap as! FIRDataSnapshot).key
print(id)
}
ref.removeObserver(withHandle: handle)
})

Source of the code (Frank van Puffelen)

关于ios - ObserveSingleEvent 效果不佳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42704693/

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