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