Как отсоединить прослушиватель снимков Firebase в Swift? - PullRequest
0 голосов
/ 05 марта 2020

Я кодировал следующий слушатель в viewWillAppear моего ViewController; и не могу понять, как его удалить. Хотя я знаю о свойстве .remove () в firebase, я все еще не знаю, как именно реализовать его здесь. Я действительно был бы признателен за помощь.

У меня также есть важный вопрос: V C, который я представил ниже, является частью горизонтальной прокрутки типа страницы. Таким образом, контейнер представления подкачки, в который помещается этот V C () и еще 2, всегда находится на экране. Будет ли отсоединять слушателя в методе viewWillDisappear () по-прежнему работать так, как задумано?

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(true)
    let db = Firestore.firestore()

    db.collection("main_collection").document("document_one")
    .addSnapshotListener { documentSnapshot, error in
      guard let document = documentSnapshot else {
        print("Error fetching document: \(error!)")
        return
      }
        let property = document.get("field_one")
        self.label.text = property as? String
      guard let data = document.data() else {
        print("Document data was empty.")
        return
      }
      print("Current data: \(data)")
    }


}

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(true)
}

1 Ответ

0 голосов
/ 05 марта 2020

Отсоединение наблюдателя Firestore работает аналогично на любой поддерживаемой платформе: когда вы присоединяете слушателя, вы возвращаете функцию. Вызовите эту функцию, чтобы отменить регистрацию наблюдателя.

From the documentation on [detaching a listener](https://firebase.google.com/docs/firestore/query-data/listen#detach_a_listener):

let listener = db.collection("cities").addSnapshotListener { querySnapshot, error in
    // ...
}

// ...

// Stop listening to changes
listener.remove()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...