基本上,我在Firebase上有一个应用程序。问题是,当Firebase对数据进行排序而不是按时间顺序排序时,它会混淆数据。Firebase Sorting
当我上网搜索原因时,发现这是因为我使用的是snapshot.value而不是snapshot.children。
但是,我不完全知道如何相应地更改代码,有人可以帮忙吗?
下面是代码:
func retrieveChatLog() {
FIRDatabase.database().reference().child("chats").child(chatID).observe(.value, with: {(snapshot) in
let chats = snapshot.value as! [String : AnyObject]
self.messages.removeAll()
for (_, value) in chats {
if let sender = value["sender"], let message = value["message"], let senderID = value["senderUID"], let date = value["date"] {
let messageToShow = Message()
messageToShow.message = message as! String
messageToShow.sender = sender as! String
messageToShow.senderUID = senderID as! String
let formatter = DateFormatter()
formatter.dateFormat = "dd.MM.yyyy"
let curDate = formatter.date(from: date as! String)
messageToShow.date = curDate as! Date
if messageToShow.senderUID != "" {
self.messages.append(messageToShow)
}
}
}
self.tableView.reloadData()
})
FIRDatabase.database().reference().removeAllObservers()
}
它给了行上的SIGABRT,其中snapshot.value被转换为[FIRDataSnapshot] –
我的不好!它应该说有snapshot.children。allObjects,而不是价值。现在应该修复。 –
我得到了另一个SIGABRT,但这次它说'无法将类型'_NSCFConstantString'的值转换为'NSDictionary',但是在说chat.value为!的行上! [String:AnyObject] –