基本上,我在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] –