Ios 从Firebase Firestore获取数据时,我的SwiftUI应用程序因错误而崩溃。这是什么原因造成的?
当我启动应用程序时,它会加载数据,但当它构建模型时,它会崩溃,并出现以下错误: 以下代码来自我的GetIphonesData.swift类: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
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 ?? "",