swift - 在 Firebase 中更新集合返回错误“在展开可选值时发现 nil”?
问题描述
我正在制作这个应用程序,其想法是您创建个人资料,添加您的狗,然后更新它们的计时器(它们最后一次吃饭、散步等的时间)。不过,我在使用 Firebase 时遇到了一些问题。我设法让用户将狗添加到他们的帐户中,但现在我正在尝试更新某只狗的一些值,应用程序崩溃并出现“在展开可选值时意外发现 nil”,这似乎是由于 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]
}
}
解决方案
你dogRef
是一个隐式展开的可选项。你需要在调用它之前给它一个值。
推荐阅读
- android - 模拟器可以使用数据库但设备不能
- node.js - 是否可以通过 websockets 进行服务器到服务器的通信?
- javascript - 如何在 on 方法中检查事件长度?
- ios - 我正在尝试查看放置在 UITableView 内的角半径。它对我不起作用
- javascript - 将数字转换为百分比的优化解决方案
- javascript - Can't capture response from paginated API with axios
- django - Django - 创建对象时发送电子邮件
- apache - Apache 禁止某些非常具体的页面
- webbrowser-control - WebBrowser 控件:阻止加载特定的 ActiveX 控件
- c# - INSERT INTO 语句中的语法错误 Error