我一直在使用Firebase进行我正在从事的新项目,因此我多次遇到此问题。当我从数据库中获取多个数据时,我无法检测到提取过程的结束(准确地说,是指对所提取数据的解析过程)。
例如,当我从数据库中获取多个用户时,我想将这些多个用户转换为模型User
的数组。基本上就是这样。
REF_USERS.child("whateverindex that will fetch multiple of users")
.observe(.childAdded) { (snapshot) in
// snapshot contains multiple users
// for each "user" transform in to a model.
snapshot.children.forEach({ (snap) in
let child = snap as! DataSnapshot // convert into snapshot
if let dict = child.value as? [String: Any] {
let user = UserModel.transformUser(dict: dict, key: child.key)
completion(user) // need to send out "user" in a completion block.
}
})
}
我无法在for循环中添加用户模型,并且无法在for循环后处理完成,因为它是作为异步运行的。 我曾考虑过将for每个循环放入另一个函数中,以构成嵌套的完成块,但这确实使它变得复杂。
你们中有人知道一种在提取后检测到多个解析过程是否完成的好方法吗?谢谢!