Как удалить firebase observer?

#ios #swift #firebase #firebase-realtime-database

#iOS #swift #firebase #firebase-база данных в реальном времени

Вопрос:

У меня есть 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)
}
  

Ответ №1:

Вам нужно

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

если вам нужно удалить OBSERVERS, вам нужно углубиться при добавлении дочерних элементов, поскольку removeAllObservers for parents не удаляет их для дочерних элементов