我在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()
中删除它呢?
答案 0 :(得分:0)
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
}