Swift Firebase删除观察者没有删除

时间:2017-03-09 04:02:43

标签: ios swift firebase firebase-realtime-database observers

我正在使用Firebase侦听器来更新远程摄像头的状态值。一旦我循环了相机生命周期,我想删除听众,这样我的相机就不会重新开始并继续拍摄视频。

以下是我基于SO建议到目前为止所做的事情:

1)添加FIRDatabaseHandle并调用removeObserver(withHandle:handle)/没有运气

2)从root引用到你在下面看到的简单调用removeAllObservers()。

struct CameraActions {

let db = DataService.ds.db // this comes from a singleton used to for other Firebase calls
let uid = DataService.ds.curUser?.uid

var cameraRef:FIRDatabaseReference!

mutating func addCameraListener(cameraNum num:String, complete:@escaping(CameraStatus)->Void){
    cameraRef = db.child("camera").child(num).child("status")
    cameraRef.observe(.value, with: {
        snap in
        if let status = snap.value as? Int {

            switch status {
            case 0: complete(.ready)
            case 2: complete(.isRecording)
            case 4: complete(.hasStopped)
            case 5: complete(.problem)
            default:    print("App is waiting on camera")
            }
        }
    })
}

func cameraHasFinishedRecording(cameraNum num: String) {
    cameraRef.removeAllObservers() // latest attempt here
    db.child("camera").child(num).child("status").setValue(0) // this still triggers database call

}

提前感谢您的任何帮助。

1 个答案:

答案 0 :(得分:0)

Firebase与宣传的完全一样。移除观察员的工作正在进行,但另一位应该是单一观察员的观察员正在开火。感谢您的投入,抱歉浪费您的时间。

干杯!