Swift,FIrebase-Can';无法通过RemoveAllobserver删除观察者
我已经尝试删除观察员一段时间了,但不知怎么的,我从未成功过。我查过这里的其他帖子,但我不能t 找出原因 这是我的密码:Swift,FIrebase-Can';无法通过RemoveAllobserver删除观察者,swift,firebase,firebase-realtime-database,Swift,Firebase,Firebase Realtime Database,我已经尝试删除观察员一段时间了,但不知怎么的,我从未成功过。我查过这里的其他帖子,但我不能t 找出原因 这是我的密码: var ref: DatabaseReference! let timeStamp: Double = NSDate().timeIntervalSince1970 override func viewDidLoad() { super.viewDidLoad() self.ref = Database.database().reference()
var ref: DatabaseReference!
let timeStamp: Double = NSDate().timeIntervalSince1970
override func viewDidLoad() {
super.viewDidLoad()
self.ref = Database.database().reference()
guard let userId = Auth.auth().currentUser?.uid else { return }
self.ref.child("users").child(userId).child("contactList").observe(.value, with: { (snapshot) in
guard let children = snapshot.value as? [String: Any] else { return }
for child in children {
guard let dictionary = child.value as? [String: Any] else { return }
guard let timeStamp = dictionary["timeStamp"] as? String else { return }
guard let timeStampDouble = Double(timeStamp) else { return }
if timeStampDouble > self.timeStamp {
self.navigationController?.pushViewController(HomeController(), animated: true)
}
}
}) { (err) in
print("Failed to fetch user: ", err)
}
}
deinit {
self.ref.child("users").removeAllObservers()
}
如果有任何建议,我将不胜感激 在节点上调用
removeallobserver
,仅从该节点删除所有观察者。它不会从子节点移除观察者
因此,您的代码:
self.ref.child("users").removeAllObservers()
这只会从
用户
中删除观察者。它不会从users/$userId/contactList
中删除观察者。要删除后者,您必须在该特定节点上调用removeAllObservers
,这意味着您需要跟踪已将观察者附加到哪些节点。调用observe
应该返回一个句柄,您可以在以后使用该句柄来删除
。