【发布时间】:2018-08-08 10:42:46
【问题描述】:
我做了一个类似于 twitter 应用程序的项目。除了这个,一切都有效。当我尝试分享某些东西时,我总是收到一个 SIGBART 错误。
@IBAction func post(_ sender: AnyObject) {
let userID = Auth.auth().currentUser?.uid
Database.database().reference().child("users").child(userID!).observeSingleEvent(of: .value, with: { (snapshot) in
let data = snapshot.value as! Dictionary<String, AnyObject>
let username = data["username"]
let userImg = data["userImg"]
let post: Dictionary<String, AnyObject> = [
"username": username as AnyObject,
"userImg": userImg as AnyObject,
"postText": self.postText.text as AnyObject
]
let firebasePost = Database.database().reference().child("textPosts").childByAutoId()
firebasePost.setValue(post)
}) { (error) in
print(error.localizedDescription)
}
}
这是我的代码。 SIGBART 在“let data = snapshot ...”上
虽然我在控制台中遇到了这个问题: 无法将“NSNull”(0x104721850)类型的值转换为“NSDictionary”(0x104721288)。 (lldb)
【问题讨论】:
-
打印
snapshot.value并检查它是否有价值 -
是的,它是“nil”,我该如何解决?
-
像使用它一样 -> snapshot.value as?字典
-
使用
guard let或if let包装它。类似guard let data = snapshot.value as? Dictionary<String, AnyObject> else {return}@TreszlerDonát -
@vivekDas 线程 1:致命错误:在展开可选值时意外发现 nil
标签: swift xcode firebase firebase-realtime-database