【发布时间】:2018-11-29 15:50:39
【问题描述】:
我正在使用 DataService 单例类按照以下函数成功读取和侦听 Firebase 路径 users 上的数据更改。
Firebase 参考:
REF_USERS = DB_BASE.child("users")
附加/监听路径和转义的函数:
func getUsers(handler: @escaping (_ name: String, _ discoverable: Bool) -> ()){
REF_USERS.observe(.value) { (snapshot) in
guard let usersSnapshot = snapshot.children.allObjects as? [DataSnapshot] else { return }
for user in usersSnapshot{
let name = user.childSnapshot(forPath: "name").value as! String
let discoverable = user.childSnapshot(forPath: "discoverable").value as! Bool
handler (name, discoverable)
}
}
}
我在我的DiscoverVC 中使用上述函数:
DataService.run.getUsers { (name, discoverable) in
print("name: \(name), discoverable: \(discoverable)")
}
如何在viewWillDisappear 函数中从DiscoverVC 中删除观察者?
我知道我需要在removeObserver 调用中传递一个DatabaseHandle,我该如何构建句柄?
override func viewWillDisappear(_ animated: Bool) {
DataService.run.REF_USERS.removeObserver(withHandle: <#T##UInt#>)
}
【问题讨论】:
标签: swift firebase firebase-realtime-database observers