Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift,FIrebase-Can';无法通过RemoveAllobserver删除观察者_Swift_Firebase_Firebase Realtime Database - Fatal编程技术网

Swift,FIrebase-Can';无法通过RemoveAllobserver删除观察者

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()

我已经尝试删除观察员一段时间了,但不知怎么的,我从未成功过。我查过这里的其他帖子,但我不能t 找出原因

这是我的密码:

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
应该返回一个句柄,您可以在以后使用该句柄来
删除