我正在从Firestore检索数据,到目前为止一切都成功了。这是我的控制台中的结果。
[{
Name = Tuna;
Price = "$3.6"; }, {
Name = Snapper;
Price = "$25.60"; }]
我想将名称和价格存储到变量中,以便可以在表格视图中显示它们。如下面的代码所示,当我将nameOfItem设置为Data2时,出现一个错误,指出“无法用索引类型为'String'的下标'[Any]'类型的值”。我想知道是否有人可以帮助我解决这个问题!
override func viewWillAppear(_ animated: Bool) {
itemCollectionRef.getDocuments { (snapshot, error) in
if let err = error {
debugPrint("Error fetching docs: \(err)")
}else {
guard let snap = snapshot else {return}
for document in snap.documents {
let data2 = document.data()["Items"]! as? Array ?? []
print(data2)
let RandomVariable = data2[0]
print(RandomVariable)
let nameOfItem = data2["Name"] as? String ?? ""
let priceOfItem = data2["Price"] as? String ?? ""
//let priceOfItem = data2["Price"] as? String ?? ""
//print(nameOfItem, priceOfItem)
}
}
}
答案 0 :(得分:0)
如您所见,在控制台输出中没有“ Items”元素之类的东西,而是因为错误消息说您有一个数组,因此将for循环内的代码更改为
let data = document.data() as? [Any] ?? []
for item in data {
if let dictionary = item as? [String: String] {
let nameOfItem = dictionary["Name"] ?? ""
let priceOfItem = dictionary["Price"] ?? ""
//...
}
}