【发布时间】:2020-05-25 06:47:53
【问题描述】:
这里是firestore,里面有一个由ingID组成的成分集合,每个ingID有4个字段
我有 [String] 的 ingID 像这样:["ing1", "ing2", ...] 调用 byDeptIngredientID
我想获取每个 ingID 的 departmentEN 所以我在 viewController 中有这段代码:
for id in byDeptIngredientID {
print("start-function")
GroceryAPI().getIngredientDept(ingID: id)
print("finish-function")
}
然后我在另一个文件调用 GroceryAPI 中有这段代码。这就是我获得 departmentEN 字段的方式:
func getIngredientDept(ingID: String) {
var byDeptIngredientDept = [String]()
let ingredientList = Firestore.firestore().collection("ingredients").document(ingID)
ingredientList.getDocument { (document, err) in
print("appending...")
self.deptIngredient.append(document!.get("departmentEN") as! String)
}
print("deptIngredient => \(self.deptIngredient)")
}
如您所见,我将 departmentEN 附加到 deptIngredient 中,但是当我之后打印出来时,结果只是空 [ ]。结果如下:
start-function
deptIngredient => []
finish-function
appending...
appending...
appending...
所以它只是跳过 getDocument 做其他事情然后回来做最后?可能是某种异步问题?但我希望 deptIngredient 像 ["dept1", "dept2", ...] 以供进一步使用。
知道如何解决这个问题吗?提前谢谢你。
PS。我已经尝试了 DispatchGroup 和 DispatchQueue,但没有运气。
【问题讨论】:
标签: ios swift google-cloud-firestore