我是一名初学者 Swift 程序员。我正在学习从 Firebase 数据库中检索数据。
调试控制台显示:
"Could not cast value of type '__NSDictionaryM' (0x11020b4f8) to 'NSString' (0x10f37b2a8).2018-03-26 15:49:25.442062+0800 messagingapp[4594:1197722] Could not cast value of type '__NSDictionaryM' (0x11020b4f8) to 'NSString' (0x10f37b2a8)".
我在代码末尾设置了一个断点,并设法确认 postDict 正确地从快照中检索数据。但是,数组 postData 无法追加。如果有人能给我建议来克服这个问题,我将不胜感激。非常感谢
var postData = ["message 1", "message 2"]
postRef = FIRDatabase.database().reference()
refHandle = postRef.observe(FIRDataEventType.value, with: { (snapshot) in
let postDict = snapshot.value as? [String : AnyObject] ?? [:]
// ...
for ( _, myvalue) in postDict {
self.postData.append(myvalue as! String)
}
self.tableView.reloadData()
})
Best Answer-推荐答案 strong>
查看您的 postDict 调试控制台输出,我猜您只是忘记访问 "Posts" 键(在填写相应的 self.postData )。例如:
let valueDict = snapshot.value as? [String: AnyObject] ?? [:]
let postDict = valueDict["osts"] as? [String: String] ?? [:]
// ...
for (_, postString) in postDict {
self.postData.append(postString)
}
顺便说一句,您还可以使用 尾随闭包 语法糖进一步简化代码:
refHandle = postRef.observe(FIRDataEventType.value) { (snapshot) in
/* observer body */
}
关于ios - Swift - 无法从 Firebase 数据库中检索数据,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/49485499/
|