如何分离swift中的firebase快照侦听器



我在ViewController的viewWillAppear中对以下侦听器进行了编码;我不知道如何移除它。虽然我知道firebase中的.remove((属性,但我仍然不知道如何在这里准确地实现它。我真的很感激你的帮助。

我还有一个重要的问题:我下面介绍的VC是水平页面类型滚动视图的一部分。因此,嵌套此VC((和其他两个VC的分页视图容器始终在屏幕上。在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)
}

在任何受支持的平台上,分离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()

最新更新