我的 Firebase 观察者不会停止观察

My Firebase Observers will not stop Observing

在我的:

override func viewWillAppear(_ animated: Bool) 

我这样创建我的 Firebase 观察器:

poolsRef.child(pID).child("lock").observe(.value, with: { snapshot in

boxesRef.child(pID).observe(.value, with: { snapshot in

coordRef.child(pID).child("x").observe(.value, with: { snapshot in

coordRef.child(pID).child("y").observe(.value, with: { snapshot in

poolsRef.child(pID).child("Winner").observe(.value, with: { snapshot in

playersRef.child("pID").observe(.value, with: { snapshot in

然后在

override func viewDidDisappear(_ animated: Bool)

我调用 removeAllObservers:

coordRef.removeAllObservers()

poolsRef.removeAllObservers()

boxesRef.removeAllObservers()

playersRef.removeAllObservers()

问题是当我离开创建所有观察者的视图时甚至认为在 viewDidDisappear 中调用了 removeAllObservers() 我完全没有不同的视图,如果我直接去 Firebase并更改与上述观察者相关的数据,我可以看到该应用程序在不应该听的时候仍在听!?

我该如何解决这个问题!!

来自Docs

Calling removeObserverWithHandle or removeAllObservers on a listener does not automatically remove listeners registered on its child nodes; you must also keep track of those references or handles to remove them.

poolsRef.child(pID).child("lock").removeAllObservers()
poolsRef.child(pID).child("Winner").removeAllObservers()

与其他观察者依此类推