swift - 如何检测观察者何时完成 Firebase

标签 swift firebase firebase-realtime-database

您好,我有一个 Firebase 应用程序,我想在应用程序启动时下载我的所有数据库。所有这些工作正常,但我想知道下载何时完成。

    func getAllDevices(completion: @escaping (Bool) -> Void) {
    reference.child("devices").queryOrderedByKey().observe(.childAdded) { (snapshot) in
        if let data = snapshot.value as? [String: Any] {
            self.sync(device: data)
        }
       // completion(true)

    }

我尝试使用完成处理程序,但效果不佳,因为每次下载新对象时都会调用它。有没有办法在下载完成时收到通知?

最佳答案

我可以使用 .value 事件解决问题。我做了类似的事情,现在工作正常。

    func getAllDevices(completion: @escaping (Bool) -> Void) {
    reference.child("devices").queryOrderedByKey().observeSingleEvent(of: .value) { (snapshot) in

        if let devices = snapshot.value as? [String: Any] {
            for data in devices.values {
                self.sync(device: data as! [String : Any])
            }
        }

        completion(true)
    }

关于swift - 如何检测观察者何时完成 Firebase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46769819/

相关文章:

ios - 在应用程序中随处显示弹出窗口,例如 UIAlertController

swift - 在工作表中使用 NavigationLink 后的两个 UINavigationController

ios - 更新后无法构建我的 iOS 应用程序

javascript - Firebase 权限被拒绝

Firebase 动态链接。如何删除 page.link 的自定义子域

java - 单击 recyclerView 中的下一个按钮后加载下一个项目

ios - Swift - tableView 行高仅在滚动或切换展开/折叠后更新

encryption - firebase 是否使用每个帐户的唯一 key 加密数据?

android - MultiAutoCompleteTextView 和 Firebase

javascript - 错误类型错误 : Cannot read property '-LlWio7vFBuxfeviKdWa' of undefined