Firebase Observer未在Swift中删除

C6S*_*ver 2 firebase swift

顶级:

let ref = FIRDatabase.database().reference()
var handler:FIRDatabaseHandle!
Run Code Online (Sandbox Code Playgroud)

从屏幕上看到的视图:

self.handler = self.ref.child("Requests").observe(.value, with: {(snapshot) in
Run Code Online (Sandbox Code Playgroud)

最后:

override func viewDidDisappear(_ animated: Bool)
{
    super.viewDidDisappear(animated)

    self.ref.removeObserver(withHandle: self.handler)
    self.ref.removeAllObservers()
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,当在另一个视图中更改数据库时,仍会调用上面VC中的观察者.我明白我不应该同时删除,但我正在尝试一切.从断点我可以看到删除代码正在触发,我也可以看到观察者只被调用一次.

在删除观察者时我错过了什么?

Cal*_*lam 5

您正在从错误的引用中删除观察者.

let ref = FIRDatabase.database().reference().child("Requests")
Run Code Online (Sandbox Code Playgroud)

尝试将此作为您的参考,然后:

self.handler = self.ref.observe(...
Run Code Online (Sandbox Code Playgroud)