尝试从Firebase读取时,我会得到
致命错误:解开可选值时意外发现nil
用于读取数据库的代码:
ref = Database.database().reference().child("userDatabases").child(userID!).child("-Lk__eup2Z7WR-iqtXkI").child("-Lk__gmhOTWfVzEPVo2t")
ref?.observeSingleEvent(of: .value, with: { (snapshot) in
for child in snapshot.children.allObjects as! [DataSnapshot] {
let dict = child.value as? [String : AnyObject] ?? [:]
self.objectProducer.append(dict["objectProducer"] as! String)
self.objectType.append(dict["objectType"] as! String)
self.objectAmount.append(dict["amount"] as! String)
self.objectMeasureUnit.append(dict["unit"] as! String)
}
})
例如,如果我尝试打印:print(dict["objectProducer"])
,则得到正确的结果。
我正在尝试读取的FirebaseStructure看起来像这样:
"-Lk__eup2Z7WR-iqtXkI" : {
"-Lk__gmhOTWfVzEPVo2t" : {
"5740700998485" : {
"amount" : "330",
"objectProducer" : "Coca Cola",
"objectType" : "Zero",
"unit" : "Milliliter"
},
"createdOn" : "24-7-2019 at: 22:5:35",
"listID" : "-Lk__gmhOTWfVzEPVo2t",
"name" : "Test"
},
这是怎么回事?
答案 0 :(得分:1)
我认为,请更改此代码行
let dict = child.value as? [String : AnyObject] ?? [:]
收件人:
guard let dict = child.value as? [String: AnyObject] else { return }
那你就不会出错了。
希望获得帮助。
答案 1 :(得分:0)
我认为由于self.objectAmount.append(dict["amount"] as! String)
而导致崩溃。
您尝试执行以下代码:self.objectAmount.append(dict["amount"] as! Int)