【问题标题】:Swift Not Pulling Data from FirestoreSwift 不从 Firestore 中提取数据
【发布时间】:2020-12-03 11:24:17
【问题描述】:

我在 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 而不是 [String] 但没有运气。

【问题讨论】:

    标签: ios swift firebase google-cloud-firestore swift5


    【解决方案1】:

    这不是因为数组,而是因为您的字段名称不匹配。在您的代码中,一些字段名称是大写的:

    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 ?? ""
    

    【讨论】:

      猜你喜欢
      • 2021-05-18
      • 1970-01-01
      • 1970-01-01
      • 2020-06-23
      • 1970-01-01
      • 2017-06-27
      • 1970-01-01
      • 1970-01-01
      • 2021-01-02
      相关资源
      最近更新 更多