ios - 如何删除 Firebase 观察者?

标签 ios swift firebase firebase-realtime-database

我有tableView和refreshControl。我希望 tableView 的数据仅在我拉动刷新时重新加载。我已经制作了重新加载数据的功能,但它始终有效。

拉刷新后数据重新加载,还要观察更新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)
}

最佳答案

你需要

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

如果您需要删除Observers,则需要在添加子级时深入了解,因为父级的removeAllObservers不会为子级删除它们

关于ios - 如何删除 Firebase 观察者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55366003/

相关文章:

ios - 合并多个子托管对象上下文

firebase - Expo React Native 的地点 API 自动完成的替代方案

ios - Swift 中的 UITableView 子类

ios - iOS 8 和 Swift 中的 MapKit

ios - 如何使用 CoreLocation 在您当前的位置添加注释

ios - 在 NSURLRequest 中检测到不正确的 NSStringEncoding 值 0x0000

ios - UIButton 高度约束 swift 不起作用

ios - 向 Xcode 属性检查器添加自定义颜色

android - 使用Android获取Firebase实时数据库中最后一个节点的数组元素

ios - 我如何访问 firebase .ref 闭包内部的变量并在外部使用它们