【发布时间】:2019-02-06 02:10:48
【问题描述】:
我正在尝试从 Firebase Firestore 文档下载信息,然后将其实时附加到数组中。每次我添加文档、删除或编辑文档时,我都希望应用程序更新和同步数组以匹配数据。我能够使用以下代码检索数据:
database.collection("_Products").getDocuments(completion: { (snapshot, error) in
if error != nil {
print(error as Any)
}else{
for document in (snapshot?.documents)! {
let Name = document.data()["Item Name"] as! String
let Price = document.data()["Item Price"] as! String
let Number = document.data()["Item Number"] as! String
let Brand = document.data()["Item Brand"] as! String
let Quantity = document.data()["Quantity"] as! String
let Category = document.data()["Item Category"] as! String
DispatchQueue.main.async {
if instoreCheckOutArray.contains(where: {$0.Number == Number && $0.Brand == Brand}){
return
}else{
instoreCheckOutArray.append(checkOutArrayInfo(Brand: Brand, Name: Name, Number: Number, Price: Price, Quantity: Quantity, Category: Category))
self.searchForCoupon()
}
}
}
}
})
然后我使用以下代码每秒运行一次函数以从数据库中获取数据:
timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(updateCart), userInfo: nil, repeats: true)
运行之前的代码可以完美地获取新数据,但我无法让应用程序更新现有数组以匹配数据库,并且当我从数据库中删除文档时,它仍保留在数组中。
谢谢你。
【问题讨论】:
-
为什么需要每秒获取数据?您可以使用listener 而不是这就是我们使用
Firebase/Firestore来避免Web 服务轮询的原因。 -
@TheTiger 谢谢!这正是我所需要的,但不知何故我不知道该功能。
标签: swift firebase google-cloud-firestore