【发布时间】:2021-05-07 22:25:43
【问题描述】:
当按下按钮时,我想在 viewController 中分离 snapshotListener。我正在阅读其他堆栈溢出问题和文档,他们正在同一个函数中为侦听器调用 remove 方法。我尝试在我的情况下这样做,但我的 snapshotListener 根本没有工作。
这是我想要调整的函数和代码块。
@objc func doneTapped() {
let updateListener = db.collection("school_users/\(user?.uid)/events").whereField("event_name", isEqualTo: navigationItem.title).addSnapshotListener(includeMetadataChanges: true) { (querySnapshot, error) in
if let error = error {
print("There was an error fetching the documents: \(error)")
} else {
self.eventName = querySnapshot!.documents.map { document in
return EventName(eventName: (document.get("event_name") as! String))
}
self.db.document("school_users/\(self.user?.uid)/events/\(self.docIDUneditableTextF.text!)").updateData(["event_date": self.dateEditableTextF.text, "event_cost": self.costEditableTextF.text, "for_grades": self.gradesEditableTextF.text]) { (error) in
if let error = error {
print("There was an error updating the document: \(error)")
} else {
print("The document was successfully updated."
}
}
}
}
dateEditableTextF.resignFirstResponder()
dateEditableTextF.isEnabled = false
costEditableTextF.resignFirstResponder()
costEditableTextF.isEnabled = false
gradesEditableTextF.resignFirstResponder()
gradesEditableTextF.isEnabled = false
navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .edit, target: self, action: #selector(editTapped))
}
我尝试调用updateListener.remove(),但它使我的快照监听器根本无法工作,而且当文档更新时,打印语句永远不会结束,这也是因为监听器仍然处于活动状态还是另一个问题?
【问题讨论】:
标签: swift google-cloud-platform google-cloud-firestore listener observers