ios - 如何在关闭任务完成后删除监听器?

标签 ios swift firebase google-cloud-firestore

我的程序中有一个函数可以将监听器附加到 Firestore。我想在处理闭包内的结果后删除此监听器。

这是我试过的-

func uniqueUserName(userName : String) {


            let listener = Firestore.firestore().collection("users").whereField("userName", isEqualTo: self.userNameTextField.text!).addSnapshotListener { (snapshot, error) in

                guard let snapshot = snapshot?.documents else {fatalError()}


                if snapshot.isEmpty {
                    print("True")
                } else {
                    print("False")
                }
             }
listener.remove()
}

当我这样做时,闭包内的 Action 没有被执行。我假设这是因为函数在闭包完成之前返回。

只有在关闭完成后才能移除此监听器的正确方法是什么?

最佳答案

如果您的监听器只是在回调中立即取消注册,您可能根本不需要监听器。相反,使用 getDocuments()一次获取查询结果,您不必担心注销任何监听器。

关于ios - 如何在关闭任务完成后删除监听器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58433134/

相关文章:

ios - cordova run ios 已停止工作

Swift 2 CLLocationManager 错误

java - 如何从 Firebase 中的节点获取所有值的总和?

JavaScript JQuery 为什么按钮的 ID 没有被正确引用

ios - Swift - 只允许在 UITableViewCell 中选中一个复选框

ios - Photoshop 中的字体大小与 Xcode 中的字体大小相同吗?

ios - 将 Realm 与 Collection View 数据源最佳实践结合使用

arrays - 将数组扩展转换为 SequenceType?

arrays - 在 Swift 5.1 中,在不知道键的情况下,根据 Date 类型的字典值对字典数组进行排序?

带有 Firebase 的 Android Studio 2.1.2 不工作