Firebase删除观察者

Nic*_*aar 8 ios firebase swift

我在代码中删除Firebase观察者时遇到问题.这是结构的细分:

var ref = Firebase(url:"https://MY-APP.firebaseio.com/")
var handle = UInt?

override func viewDidLoad() {
    handle = ref.observeEventType(.ChildChanged, withBlock: {
        snapshot in

        //Do something with the data
    }
}

override func viewWillDisappear(animated: Bool) {
    if handle != nil {
        println("Removed the handle")
        ref.removeObserverWithHandle(handle!)
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,当我离开viewcontroller时,我看到"Removed the handle"被打印出来,但当我返回viewcontroller时,我的观察者会为每个事件调用两次.当我离开并再次返回时,它被召唤三次.等等.为什么观察者没有被移除?

我也ref.setValue("some value")稍后在代码中调用,这可能与它有什么关系吗?

小智 1

鉴于现在是 2015 年 4 月,并且该错误仍然存​​在,我建议解决该问题:

  • 保留句柄的引用(假设在字典中,并且在为同一事件类型启动新观察者之前检查观察者是否已经存在。

周围有手柄的占地面积非常小(基于一些官方评论:)),所以不会造成太大伤害。