我检查Firestore数组是否包含来自另一个数组(不是Firestore数组)的字符串。然后将数据放在字典中
func loadData(){
for i in 0..<testTable.count {
let db = Firestore.firestore()
db.collection("Ingredients").whereField("compName", arrayContains: testTable[i] ).getDocuments(){
querySnapshot, error in
if let error = error {
print("\(error.localizedDescription)")
}else if let querySnapshot = querySnapshot {
if (querySnapshot.isEmpty == false){
self.ingredientsArray = querySnapshot.documents.compactMap({Ingredients(dictionary: $0.data())})
print("\(self.ingredientsArray)")
DispatchQueue.main.async {
self.tableView.reloadData()
}
}
}
}
}
}
问题在于字典按预期仅保留了最后一个快照中的数据。有没有办法保留所有快照中的所有数据?
答案 0 :(得分:0)
在您重新分配数组self.ingredientsArray
时会发生这种情况,因此请替换
self.ingredientsArray = querySnapshot.documents.compactMap({Ingredients(dictionary: $0.data())})
使用
let res = querySnapshot.documents.compactMap({Ingredients(dictionary: $0.data())})
self.ingredientsArray.append(contentsOf:res)