【发布时间】:2017-06-19 00:21:28
【问题描述】:
我保证读起来很容易:)
你好,我现在卡住了。我想先查询从最新帖子开始的所有帖子,而不是最旧的帖子。为什么?因为这是我可以在 tableView 中包含分页的唯一方法。 (这意味着当用户到达底部时重新加载)
假设我有 10 个帖子,从最早的 #1 和最新的 #10 开始:1,2,...,10 如果我查询限于前 5 个帖子,我得到 [1,2,3,4,5] 然后我反转数组,这将显示 [5,4,3,2, 1] 在我的 tableview 上从 5 开始。
ISSUE:问题是一旦用户到达tableview的底部,如果我从最后一个帖子的时间戳开始查询接下来的五个帖子,我会得到...... [6,7,8,9,10]
但现在我的表格视图不再正确,因为它会显示 [5,4,3,2,1,10,9,8,7,6] 我希望如果我可以使用当前设备日期作为时间戳并查询之前的所有帖子,如下所示:我基本上可以获得 [10,9,8,7,6] 然后当用户到达底部:[10,9,8,7,6,5,4,3,2,1]
让今天时间:TimeInterval = NSDate().timeIntervalSince1970
FIRDatabase.database().reference().child("post").child(animal).queryOrderedByValue().queryEnding(atValue: todayTime, childKey: "datePost").queryLimited(toLast: 5).observe(.value, with: {(snapshot) in
【问题讨论】:
-
只需将您的时间戳写为负值,其他一切都会到位。我写了一个对另一个可能有帮助的问题的答案Negative Firebase Timestamp
-
首先感谢您的回复!但是,呵呵,您的答案非常复杂-我无法将时间戳设为负值,因为它们是在 firebase 上制作的?您是否暗示您在上一篇文章中的回答是我查询在 Firebase 上制作的时间戳,然后将其设为负数?抱歉,不是以英语为母语的人
-
如另一个答案中所述,您无法直接从 Firebase 获取时间戳(在代码中),但是在写入时(根据我的回答中提供的代码),您可以观察它所写入的节点它将为您提供快照中的时间戳。然后,您可以将其设为负数(在代码中)并将其写入需要排序的节点。对于负时间戳,排序将通过该时间戳节点进行,并且自然会按照正确的顺序排列,最新的在“顶部”。所以顺序将是 -10(最新)、-9、-8....-1。所以你读 -10 到 -5,然后 -4 到 -1 等等。
-
嘿,Jay,很抱歉打扰,但正如您在评论中所说,我遇到了这部分的问题 [ 所以顺序将是 -10(最新),-9,-8....- 1.所以你读 -10 到 -5,然后 -4 到 -1 等等。]stackoverflow.com/questions/44682240/…
标签: ios swift uitableview firebase firebase-realtime-database