ios - 从Firebase 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.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)
                    }
                }
            }
        }
    }
}


当我打印数据时,它会打印。当我在数据库中有1个项目时,它可以工作,但是一旦我将更多项目添加到数据库中,它就会崩溃。有没有解决的办法,还是有原因的呢?

最佳答案

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

models: i.get("model") as! String,

将以上更改为:
models: i.get("model") != nil ?? i.get("model") as! String : "",

(要么)
models: i.get("model") as? String ?? "",

希望能有所帮助。

关于ios - 从Firebase Firestore获取数据时,我的SwiftUI应用程序崩溃并出现错误。这可能是什么原因造成的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60664231/

相关文章:

iOS横向左vs右vs错误

ios - 为什么我的 DEBUG 预处理器宏没有被识别 objective-c

ios - 如何使用约束从下到上为 UIView 设置动画?

iOS动态表格 View 周围有边框

android - 通知设置 channel 和 FCM subscribeToTopic 有什么不同?

objective-c - 使用存储在变量中的类名来调用类方法?

ios - 当出现新的 View Controller 时,带有重复选项的 UIView.animate 停止

ios - 使用 Cocoapods 安装 Firestore

firebase - 检测到零个或 2 个或更多 [DropdownMenuItem] 具有相同的值

ios - TabBar 应用程序 - 在显示 View 之前加载数据