ios - Firebase 从上一篇文章中获取数据

标签 ios swift firebase firebase-realtime-database key

每次用户登录到应用程序时,private var currentKey: String! 都是 nil 所以这会被调用:

databaseRef.child("OMG_Pictures").queryOrdered(byChild: "timeStamp").queryLimited(toLast: 5)

它总是拉旧帖子。我怎样才能保存当前 key ,这样用户就不必每次都看到相同的帖子,而是从他们离开的地方继续,数据库只获取新帖子? (类似于社交媒体应用程序所做的)

最佳答案

您希望向后分页,这要求您(在本例中)调用 queryEnding(atValue: ...)。通过将此添加到您的查询,您可以使其“跳过”您已经看到的项目,实质上是通过结果向后翻页。

假设您当前的查询返回具有这些时间戳的项目:

 96
 97
 98
 99
100

要使用 queryEnding(atValue: ...),您需要知道您已经看到的最旧项目的时间戳值,在本例中为 96。您将其传递到下一个查询:

databaseRef
  .child("OMG_Pictures")
  .queryOrdered(byChild: "timeStamp")
  .queryEnding(atValue: 96)
  .queryLimited(toLast: 6)

现在你得到:

 91
 92
 93
 94
 95
 96

您会注意到我们现在得到 6 件元素。这是必需的,因为这个新查询结果中的最后一项是我们之前已经得到的。所以我们需要检索一个额外的项目,并用客户端代码删除重叠的项目。

另请注意,相同的时间戳值可能会在您的消息中出现多次。在这种情况下,您需要时间戳 的值和 您见过的最旧项目的键,并将两者传递给 queryEnding(atValue: ..., childKey: ... )

关于ios - Firebase 从上一篇文章中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52028381/

相关文章:

javascript - 调用 Objective-C 函数时将值返回给 JavaScript

java - Android Firebase - 根据微调器更改来自 firebase 的 ListView 数据

javascript - Firebase/Angularfire 0.9 - 创建新用户和配置文件

macos - 使用 Swift 2 在 OSX 上设置桌面背景

iOS:(Swift)如何显示距当前位置的距离并在注释副标题上存在注释

swift - "Application tried to present modally an active controller"iOS8 - 当我想在注销时显示 AlertView 时

firebase - Firebase 的云函数 : How to get event. data.ref.parent.child ("xxx").val?

iOS:自定义单元格和实用程序

ios - CocoaPods AmazonMobileHub 架构 x86_64 的 undefined symbol

ios - 将现有音频文件复制到另一个目标时出错