班级:
let ref = FIRDatabase.database().reference()
var handler:FIRDatabaseHandle!
从屏幕上看来:
self.handler = self.ref.child("Requests").observe(.value, with: {(snapshot) in
最后:
override func viewDidDisappear(_ animated: Bool)
{
super.viewDidDisappear(animated)
self.ref.removeObserver(withHandle: self.handler)
self.ref.removeAllObservers()
}
不幸的是,当在另一个视图中更改数据库时,仍会调用上面VC中的观察者。我明白我不应该同时删除,但我正在尝试一切。从断点我可以看到删除代码正在触发,我也可以看到观察者只被调用一次。
删除观察者时我缺少什么?
答案 0 :(得分:5)
您正在从错误的引用中移除观察者。
let ref = FIRDatabase.database().reference().child("Requests")
尝试将此作为您的参考,然后:
self.handler = self.ref.observe(...