gpt4 book ai didi

ios - 如何将从 Firestore 下载的数据转换为数组并将其分配给我的 TableView ?

转载 作者:行者123 更新时间:2023-11-29 11:25:10 26 4
gpt4 key购买 nike

我正在捕获 Firebase 向我们展示的 Firestore 数据,但我不知道如何保存我所做的查询。

总而言之,我想要做的是将所有在您的 pid 字段中具有相同值的文档,然后在表格中显示产品字段和开始日期,每个文档在不同的单元格中。


收藏美食

文档:1

     pid:john1
product:Ice
startDate:01/01/2010

文件:2

     pid:john1
product:Rice
startDate:01/02/2010

我需要在表格中显示:


冰是 2010 年 1 月 1 日买的


大米是 01/02/2010 买的


我有这个代码:

func loadFood(){
pid = "john1"
db = Firestore.firestore()
db.collection("food").whereField("pid", isEqualTo: pid)
.addSnapshotListener { querySnapshot, error in
guard let documents = querySnapshot?.documents else {
print("\n--------------------------------------")
print("Error document: \(error!)")
print("--------------------------------------\n")
return
}

let startDate = documents.map { $0["startDate"]! }
let product = documents.map {$0["product"]!}

let message = ("\(product) was bought \(startDate)")
self.dataRecord.insert(message, at: 0)
DispatchQueue.main.async {
self.tvRecord.reloadData()
}
}
}

我在表中显示:


[Ice, Rice] 购买于 [01/01/2010, 01/02/2010]


最佳答案

你犯了几个错误。首先,您不必要地多次遍历文档;那不是很有效。在您的情况下,您应该循环一次并在每次循环迭代中进行所有数据准备。其次,Firestore 有一个专门用于从文档字段中提取数据的方法,称为 get(),该方法非常易读且高效。

func loadFood(){

pid = "john1"

Firestore.firestore().collection("food").whereField("pid", isEqualTo: pid).addSnapshotListener { querySnapshot, error in

guard let documents = querySnapshot?.documents else {
print("\n--------------------------------------")
print("Error document: \(error!)")
print("--------------------------------------\n")
return
}

for doc in documents {

guard let startDate = doc.get("startDate") as? String,
let product = doc.get("product") as? String else {
continue // continue this loop, not "return" which will return control out of the calling function
}

let message = "\(product) was bought \(startDate)"
dataRecord.append(message)

}

DispatchQueue.main.async {
self.tvRecord.reloadData()
}

}

}

关于ios - 如何将从 Firestore 下载的数据转换为数组并将其分配给我的 TableView ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59274474/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com