我正在尝试获取消息传递应用程序的先前/较旧消息。第一次获取是针对一批最新消息。但是当用户向上滚动时,我想获取之前的消息并对其进行排序。
func getOlderMessages () {
if self.lastSnapshot == nil {return}
let next = Firestore.firestore().collection("chats/\(self.chat.id!)/messages")
.order(by: "timestamp", descending: false)
.limit(to: 10)
.start(afterDocument: self.lastSnapshot)
next.getDocuments(completion: { (snapShot, error) in
for doc in snapShot!.documents {
let message = Message(doc.data())
self.chat.messages.insert(message, at: 0)
}
self.tableView.reloadData()
self.refreshControl.endRefreshing()
guard let last = snapShot?.documents.last else { return }
self.lastSnapshot = last
})
}
更新:将降序设置为TRUE似乎可以解决问题……
答案 0 :(得分:0)
我会查询query cursor。如文档所示,使用startAfter
和limit
的组合。要触发此负载行为,还需要检测scrollTop == scrollHeight的时间,这是页面应触发先前消息查询的时间。