如何删除firebase观察者?

时间:2019-03-26 20:52:07

标签: ios swift firebase firebase-realtime-database

我有tableView和refreshControl。我只想在刷新时才重新加载tableView的数据。我已经完成了重新加载数据的功能,但是它始终可以工作。

在刷新后重新加载数据,但还要观察update tableView。 如何删除? 我要进行观察,重新加载数据并删除观察(删除连接)。

func reloadTable() {
    let ref = Database.database().reference()
    let userID = Auth.auth().currentUser?.uid
    postData.removeAll()

    var databaseHandle: DatabaseHandle?
    databaseHandle = ref.child("doctors").child(userID!).observe(.childAdded) { 
        (snapshot) in
        if let actualPost = snapshot.value as? String {
            self.postData.append(actualPost)
            self.table.reloadData()
        }
    }

    // I tried this:
    ref.removeAllObservers()

    // And this as well:
    ref.removeObserver(withHandle: databaseHandle)
}

1 个答案:

答案 0 :(得分:2)

您需要

let current = ref.child("doctors").child(userID!) 
 current.observe ///
current.removeAllObservers()

如果您需要删除观察者,则需要在添加孩子时深入了解,因为removeAllObservers(对于父母而言,并不会为孩子删除它们)