При получении данных из Firebase Firestore мое приложение SwiftUI вылетает с ошибкой. Чем это может быть вызвано? - PullRequest
1 голос
/ 13 марта 2020

Когда я запускаю приложение, оно загружает данные, но при построении модели происходит сбой со следующей ошибкой:

A screen of the error

Следующий код взят из моего GetIphonesData. swift class:

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 элемент в базе данных, он работает, но как только я добавляю больше элементов в базу данных, происходит сбой. Есть ли какое-то исправление к этому или вообще есть причина?

1 Ответ

1 голос
/ 13 марта 2020

Возвращаемым значением приведенного ниже кода является ноль, и поэтому он не может преобразовать его как строку.

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

Измените приведенное выше значение на:

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

(или)

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

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...