【发布时间】:2019-10-04 09:08:57
【问题描述】:
我正在尝试从我的 firebase 云存储中获取数据并将其按顺序放入一个数组中。我了解 firebase 的异步性质,并且我需要使用调度组来等待数据返回。我曾尝试在这里查看解决方案,但无法让我的代码正常工作。任何帮助将不胜感激
func ReadMyData() {
let dispatchGroup = DispatchGroup()
let data = Firestore.firestore().collection("users").document("LdGcPDsSVEtYyrGIHR1D")
data.getDocument { (document, error) in
for item in (document?.data())! {
dispatchGroup.enter()
self.Array.append(item.key)
dispatchGroup.leave()
}
dispatchGroup.wait()
}
print(Array)
}
【问题讨论】:
-
派组等待数据返回不一定准确。取决于您对数据的处理方式和时间。例如,如果要为 tableView 填充 dataSource 数组,可以在 Firestore 闭包中加载 dataSouce,然后调用 tableView.reloadData()。无需派送。问题是您希望它们按顺序排列。顺序是什么?按姓氏?通过uid?何时注册您的应用?
-
请注意,由于 Firestore 的异步特性,
print(Array)将在加载数组之前执行,并且通常会打印 nil。在你的 for 循环之后移动它。此外,只需删除调度调用,因为它们不是必需的,并且您的数据将是有序的(您没有指定您希望数据如何排序)但是,依赖它们有序可能是一个问题。将它们放入字典中,顺序无关紧要。
标签: swift firebase google-cloud-firestore