Как отсоединить слушателя, определенного в другой области? - PullRequest
0 голосов
/ 04 апреля 2020

Я определил слушателя в функции viewWillAppear() и пытаюсь удалить / отсоединить его в функции viewWillDisappear. Однако я не могу получить доступ к слушателю в функции viewWillDisappear(), поэтому не могу использовать .remove() для его отключения.

Мой код:

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

     let db = Firestore.firestore()
     let docRef = db.collection("collection").document("document")

    let listener = docRef.addSnapshotListener { (querySnapshot, errur) in
     ....
     }
}




 override func viewWillDisappear(_ animated: Bool) {
    listener.remove() //ERROR: Use of unresolved identifier 'listener'
}

Я понимаю, что ошибка в том, что «слушатель» был определен в другой области, но как я могу получить к нему доступ, чтобы удалить его в viewWillDisappear()?

1 Ответ

0 голосов
/ 04 апреля 2020
private var listener: ListenerRegistration?

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

    let db = Firestore.firestore()
    let docRef = db.collection("collection").document("document")

    listener = docRef.addSnapshotListener { (querySnapshot, errur) in
         // ....
     }
}

override func viewWillDisappear(_ animated: Bool) {
    // always call super.viewWillDisappear also.
    super.viewWillDisappear(animated)
    listener.remove() //ERROR: Use of unresolved identifier 'listener'
    listener = nil
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...