gpt4 book ai didi

swift - 如何知道子索引被添加到有序 FirebaseQuery 中

转载 作者:行者123 更新时间:2023-11-30 12:15:37 26 4
gpt4 key购买 nike

使用 Firebase 和 Swift SDK

我刚刚开始使用 Firebase,想要显示按 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
}
}

第一次加载我的 View 时,每个项目都按照查询指定的正确顺序到达,因此显示正常。但是,如果我创建一个新 channel ,它确实会出现在 TableView 的末尾,因为我只是将其添加到数组的末尾,然后在 TableView 上调用 insertRow。我的问题是:是否有任何机制可以为我们提供 DataSnapshot 的新插入位置?

对于 DataEventType.childMoved 也有同样的问题:我们知道快照已移动,但如何知道它已移动到哪里?

最佳答案

我最终使用了 FirebaseUI,尤其是子模块 FirebaseDatabaseUI(请参阅 github 存储库 here )他们提供了一个 FUITableViewDataSource,您只需创建一个查询并将其传递给它,它将处理排序等所有内容。我还使用了 FUIArray,它只是一个由查询支持的数组,带有用于添加/删除/移动/更新的委托(delegate)事件(和适当的索引)。

关于swift - 如何知道子索引被添加到有序 FirebaseQuery 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45464243/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com