ObserveSingleEvent does not work good
我的实时数据库如下:
如您所见,它仅包含1个孩子。几分钟前,我在RunningGames中又有4个孩子。我在浏览器中删除了它们。现在调用此命令:
1 2 3 4 5 6 7 | 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) } }) |
它仍会打印我在浏览器中删除的那些游戏。在我的应用程序中调用
RunningGames中的某些孩子也有孩子,但是他们会在应用程序中自动删除自己。但是,在调用observeSingleEvent时,这些值也仍然可见。
可能您的本地缓存仍在保存过时的信息。当您从多个来源处理数据时,通常会发生这种情况。
我会尝试使用
也许这样做可以只获取一次信息。
1 2 3 4 5 6 7 8 | 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) }) |
代码源(弗兰克·范·普菲伦)