0

我正在尝试为消息传递应用程序获取以前/较旧的消息。第一次提取是针对一批最新消息。但是当用户向上滚动时,我想获取以前的消息并对其进行排序。

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 似乎可以解决问题......

4

1 回答 1

0

我会查找查询游标。使用 和 的组合,startAfterlimit文档中所示。要触发此加载行为,您还需要检测 scrollTop == scrollHeight 的时间,这是页面应该触发先前消息查询的时间。

于 2018-08-16T20:19:03.577 回答