Ios Firebase从上一篇文章中获取数据
每次用户登录应用程序Ios Firebase从上一篇文章中获取数据,ios,swift,firebase,firebase-realtime-database,key,Ios,Swift,Firebase,Firebase Realtime Database,Key,每次用户登录应用程序private var currentKey:String为nil,因此调用: databaseRef.child("OMG_Pictures").queryOrdered(byChild: "timeStamp").queryLimited(toLast: 5) 它总是把旧的柱子拉起来。我如何保存当前密钥,以便用户不必每次都看到相同的帖子,而是从停止的地方继续,数据库只获取新帖子?(类似于社交媒体应用程序所做的)您希望重新分页,这要求您(在本例中)调用queryend(a
private var currentKey:String
为nil
,因此调用:
databaseRef.child("OMG_Pictures").queryOrdered(byChild: "timeStamp").queryLimited(toLast: 5)
它总是把旧的柱子拉起来。我如何保存当前密钥,以便用户不必每次都看到相同的帖子,而是从停止的地方继续,数据库只获取新帖子?(类似于社交媒体应用程序所做的)您希望重新分页,这要求您(在本例中)调用
queryend(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个项目。这是必需的,因为这个新查询结果中的最后一项是我们之前已经得到的。因此,我们需要检索一个额外的项,并删除与客户端代码重叠的项
还要注意,时间戳的相同值可能在消息中多次出现。在这种情况下,您需要时间戳的值和您看到的最旧项目的键,并将它们传递到
查询绑定(atValue:…,childKey:…)
您正在寻找分页,这要求您(在这种情况下)调用查询绑定(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个项目。这是必需的,因为这个新查询结果中的最后一项是我们之前已经得到的。因此,我们需要检索一个额外的项,并删除与客户端代码重叠的项
还要注意,时间戳的相同值可能在消息中多次出现。在这种情况下,您需要时间戳的值和您看到的最旧项目的密钥,并将它们传递到
查询结果(atValue:…,childKey:…)
好的,但当我刷新(不重新运行sim卡)应用程序时,我会从100-96开始,而不是从96或91开始。您想让我用我根据您的答案编写的代码更新问题吗?您需要在重新加载时保留信息,以便重新生成查询。这样做似乎是一个独立的问题,与Firebase几乎没有任何关系。我建议您搜索如何保存信息,因为我很确定您不是第一个尝试这样做的人。好吧,但当我刷新(不重新运行sim卡)应用程序时,我会从100-96开始,而不是从96或91开始。您想让我用我根据您的答案编写的代码更新问题吗?您需要在重新加载时保留信息,以便重新生成查询。这样做似乎是一个独立的问题,与Firebase几乎没有任何关系。我建议您搜索如何持久保存信息,因为我很确定您不是第一个尝试这样做的人。