你好,我有一个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/

10-08 20:38