如何解决Swift不从Firestore提取数据
我在Firestore中有一堆这种格式的对象。当我没有将数组包含在对象中时,它工作得很好,但现在似乎根本没有加载。
这是数据库:
这里是对象:
struct BuildingNew: Identifiable,Hashable,Equatable{
var id : String = UUID().uuidString
var ml : String
var name : String
var address : String
var description : String
var phone : String
var website : String
var imageURL: String
var historicalRelevance : String
var images : [String]
var tags : [String]
}
最后,这是视图模型:
class BuildingviewmodelNew: ObservableObject {
@Published var buildings = [BuildingNew]()
private var db = Firestore.firestore()
func fetchData(){
db.collection("buildings_new").addSnapshotListener{ (querySnapshot,error) in
guard let documents = querySnapshot?.documents else {
print ("No buildings found")
return
}
self.buildings = documents.map { (queryDocumentSnapshot) -> BuildingNew in
let data = queryDocumentSnapshot.data()
let ml = data["ID"] as? String ?? ""
let name = data["Name"] as? String ?? ""
let address = data["Address"] as? String ?? ""
let description = data["Description"] as? String ?? ""
let phone = data["Phone"] as? String ?? ""
let website = data["Website"] as? String ?? ""
let imageURL = data["current_image"] as? String ?? ""
let historicalRelevance = data["historicalRelevance"] as? String ?? ""
let images = data["images"] as? [String] ?? [""]
let tags = data["tags"] as? [String] ?? [""]
return BuildingNew(ml: ml,name: name,address: address,description: description,phone: phone,website: website,imageURL: imageURL,historicalRelevance: historicalRelevance,images: images,tags: tags)
}
}
}
}
它正在使用.OnAppear函数在SwiftUI中获取数据,但是自从添加数组以来,它一直没有用。我尝试使用 Array
解决方法
不是因为数组,而是因为您的字段名称不匹配。在您的代码中,某些字段名称是大写的:
let ml = data["ID"] as? String ?? ""
let name = data["Name"] as? String ?? ""
...
但是,在您的数据库中,它们是小写的:
id: "MLid"
name: "daves diner"
因此,将以下内容更改为小写:
let ml = data["id"] as? String ?? ""
let name = data["name"] as? String ?? ""
let address = data["address"] as? String ?? ""
let description = data["description"] as? String ?? ""
let phone = data["phone"] as? String ?? ""
let website = data["website"] as? String ?? ""
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。