Firebase Pagination - Swift 3

时间:2017-01-07 02:36:10

标签: ios swift firebase firebase-realtime-database

我已经打了好几个小时了,似乎无法找出2件事。

  1. 如何首先显示所有最新帖子(将这些帖子添加到我的#34;项目"我使用" queryEndingAtValue"" ; queryLimitedToLast"现在我的帖子根本没有显示。

  2. 我的工作时间是多次将项目添加到我的数组中。

  3. 提前致谢。

    这是我的数据库 snapshot sample of my db

    这是我的代码,对firebase来说很新,真的只是承认我不知道我在这里做什么..

    AES/ECB/PKCS5Padding

1 个答案:

答案 0 :(得分:3)

  

我的工作时间是多次将项目添加到我的数组中。

您正在侦听value事件。只要查询数据发生更改,就会触发此事件。每当它触发时,它都包含查询的完整数据。

这意味着如果您从列表中的三个项目开始,您将获得这三个项目:

1
2
3

然后,如果添加第四项,则会获得一个值事件:

1
2
3
4

您会注意到初始集合与添加值​​后获得的集合之间存在重叠,这就是您看到重复消息的原因。

处理此问题的最简单方法是侦听child_added事件,而不是值事件。在上面的场景中,您最初会收到三个child_added个事件:

1
2
3

然后在添加项目时,您只需获得一个child_added

4

使用child_added也可以简化您的代码,因为您不再需要处理该代码:

query.queryLimited(toLast: UInt(count)).observeSingleEvent(of: .childAdded, with: { snapshot in
    // instance of ItemForSale, it's added to the array that contains the latest version of the data.
    let itemForSaleSingle = ItemForSale(snapshot: snapshot as! FIRDataSnapshot)