0
使用火力地堡和斯威夫特SDK如何知道孩子加入其索引的有序FirebaseQuery
我剛開始用火力地堡,想顯示由LAST_UPDATE下令對話的列表。下面的查詢工作正常:
let query = Database.database().reference().child("chat").child("channels").queryOrdered(byChild: "last_update")
query.observe(DataEventType.childAdded) { (snapshot: DataSnapshot) in
if let value = snapshot.value as? [String: Any?] {
log.debug("added channel: \(snapshot.key) : \(value)")
//add object to array, insertRow in tableview
}
}
第一次我的看法是加載,每個項目到達由查詢指定正確的順序,所以顯示效果好。但是,如果我創建了一個新的通道,它確實出現在tableview的末尾,因爲我只是將它添加到數組的末尾,並在我的表視圖上調用insertRow。我的問題是:是否有任何mecanism給我們DataSnapshot的新插入位置?
DataEventType.childMoved同樣的問題:我們知道快照已經移動,但是如何知道它已經移動了?
我想你不知道,因爲你沒有獲得有關添加/移回快照的信息。你可以做的是每次.childAdded .childMoved被調用,根據你的屬性對結果進行排序並重新加載tableview。 – ZassX
這是一個解決方案,但它看起來太多了:按照查詢已經執行的順序排序,我不應該再這樣做。它也阻止我在表格視圖上進行細粒度更新(通過移動/插入動畫) – PhilippeAuriach