Я создаю это приложение, в котором идея заключается в том, что вы создаете профиль, добавляете своих собак, а затем обновляете их таймер (когда они в последний раз ели, гуляли и т. Д.).У меня есть некоторые проблемы с Firebase, хотя.Мне удалось заставить пользователя добавлять собак в свою учетную запись, но теперь, когда я пытаюсь обновить некоторые значения для определенной собаки, приложение вылетает с «Неожиданно найденным нулем при развертывании необязательного значения», которое, по-видимому, связано с Firebase.Моя база данных содержит пользователя, его собак и коллекцию значений собак, таких как firstTimer.Когда я пытаюсь обновить это значение с помощью метода setData (), оно просто продолжает сбой и ничего не отображается в моей базе данных.Я также пытался обновить значения по отдельности, но безрезультатно.Пожалуйста, скажите мне, если я поступаю неправильно, и если есть какой-то другой способ попробовать, спасибо!
import Foundation
import Firebase
import UIKit
//DogViewController
class MyDogViewController: UIViewController {
var db: Firestore!
var auth: Auth!
var storage: Storage!
var thisDog: DogEntry?
var dogRef: DocumentReference!
override func viewDidLoad() {
thisDog?.firstTimer = (formattedDate)
if let dog = thisDog?.toAny() {
print("Let")
//THE PROGRAM PRINTS LET
dogRef.setData(dog)
//BUT CRASHES HERE
}
else {
print("Error")
}
}
}
}
//Dog Modal Class
class DogEntry {
var name: String
var image: String
var firstTimer: String
var secondTimer: String
var walking: Bool = false
var walkArray: [String]
var id: String = ""
init(name: String, image: String, firstTimer: String, secondTimer: String, walking: Bool, walkArray: [String]) {
self.name = name
self.image = image
self.firstTimer = firstTimer
self.secondTimer = secondTimer
self.walking = walking
self.walkArray = walkArray
}
init(snapshot: QueryDocumentSnapshot) {
let snapshotValue = snapshot.data() as [String : Any]
name = snapshotValue["name"] as! String
image = snapshotValue["image"] as! String
firstTimer = snapshotValue["firstTimer"] as! String
secondTimer = snapshotValue["secondTimer"] as! String
walking = snapshotValue["walking"] as! Bool
walkArray = snapshotValue["walkArray"] as! [String]
id = snapshot.documentID
}
func toAny() -> [String: Any] {
return ["name": name, "image": image, "firstTimer": firstTimer, "secondTimer": secondTimer, "walking": walking, "walkArray": walkArray]
}
}