Ios 从Firebase Firestore获取数据时,我的SwiftUI应用程序因错误而崩溃。这是什么原因造成的?

Ios 从Firebase Firestore获取数据时,我的SwiftUI应用程序因错误而崩溃。这是什么原因造成的?,ios,swift,firebase,google-cloud-firestore,swiftui,Ios,Swift,Firebase,Google Cloud Firestore,Swiftui,当我启动应用程序时,它会加载数据,但当它构建模型时,它会崩溃,并出现以下错误: 以下代码来自我的GetIphonesData.swift类: import Foundation import Firebase import Combine class GetIphonesData : ObservableObject { @Published var data = [Iphone]() init() { let db = Firestore.firestor

当我启动应用程序时,它会加载数据,但当它构建模型时,它会崩溃,并出现以下错误:

以下代码来自我的GetIphonesData.swift类:

import Foundation
import Firebase
import Combine

class GetIphonesData : ObservableObject {
    @Published var data = [Iphone]()

    init() {
        let db = Firestore.firestore()

        db.collection("iphones").addSnapshotListener { (snap, err) in
            DispatchQueue.main.async {
                if let err = err {
                    print("Error getting documents: \(err)")
                } else {
                    for i in snap!.documents {
                        let iphone = Iphone(id: i.documentID,
                                                name: i.get("name") as! String,
                                                models: i.get("model") as! String,
                                                yearReleased: i.get("yearReleased") as! String,
                                                storageVariants: i.get("storageVariants") as! String,
                                                colors: i.get("colors") as! String,
                                                batteryCapacity: i.get("batteryCapacity") as! String,
                                                cameraResolution: i.get("cameraResolution") as! String,
                                                screenSize: i.get("screenSize") as! String,
                                                screenResolution: i.get("screenResolution") as! String,
                                                sensors: i.get("sensors") as! String,
                                                memory: i.get("memory") as! String)

                        self.data.append(iphone)
                    }
                }
            }
        }
    }
}


当我打印数据时,它会打印。当我在数据库中有一个项目时,它可以工作,但一旦我向数据库中添加更多项目,它就会崩溃。是否对此进行了修复或有任何原因?

下面代码的返回值为零,因此无法将其转换为字符串

models: i.get("model") as! String,
将上述内容更改为:

models: i.get("model") != nil ?? i.get("model") as! String : "",
(或)


希望这能有所帮助。

好的,这很管用,但您是否知道为什么models字段中有值时会返回为nil?您需要检查返回的整个数据数组。因为它是一个数组,所以有可能其中一个项模型是nil。
models: i.get("model") as? String ?? "",