firebase与autoId的分页

时间:2016-08-11 12:38:59

标签: ios swift firebase pagination firebase-realtime-database

像facebook一样,我的应用发布了人们可以发表评论的帖子。如果评论变得很大,我希望对评论进行分页。我使用下面的简单代码来测试该功能。基本上,当用户点击测试按钮时,会打印出更多注释。我的所有评论条目都通过childByAutoId保存在firebase中。我在网上看到我可以使用autoID按时间顺序排序,因为它们像时间戳一样生成。附件是我的firebase条目firebaseEntry

@IBAction func testBtnPressed(sender: AnyObject) {

    var pageSize = 3
    var query = DataService.ds.REF_COMMENT.child(self.post.postKey).queryOrderedByKey()

    if startKey != nil {
        query = query.queryStartingAtValue(startKey)
        pageSize += 1
    }

    query.queryLimitedToFirst(UInt(pageSize)).observeSingleEventOfType(.Value) { (snapshot: FIRDataSnapshot) in
        if snapshot.exists() {
            if let comments = snapshot.value as? Dictionary<String, AnyObject> {

                for comment in comments {
                    let commentKey = comment.0
                    let commentDict = comment.1

                    print("commentDict \(commentDict)")

                    self.startKey = commentKey
                }
            }
        } else {
            // No comments
        }
    }
}

如照片所示,我从1到16有几条评论(从图像顶部到底部是评论1,评论2,评论3,......等)这是在输入时的顺序firebase也。

所以我期待的是当我点击测试按钮时,我将从commentDict打印出来的东西按照

的顺序

评论1,评论2,评论3.

然后当我再次按下时,我会得到

评论3,评论4,评论5

然而,在第一次按下我实际上,

评论2,评论1,评论3.

在第二次按下时,我正在

评论5,评论4,评论3

之后的每一次媒体都是

评论5,评论4,评论3

  1. 为什么第一次没有正确的顺序
  2. 为什么每次第一次出现后退订单?
  3. AutoId没有做它想做的事吗?

    谢谢,

0 个答案:

没有答案