【发布时间】:2017-08-29 10:59:09
【问题描述】:
对于我正在开发的 iOS 应用程序,我需要按降序获取消息,即最新消息首先出现,然后是第二条最新消息,等等。
从查看其他 SO 答案和研究看来,我的情况的最佳方法是创建一个负时间戳,然后将其作为消息的额外属性保存到数据库中。
然后,我将使用 queryOrderedByChild('negativeTimestamp') 获取 observeSingleEvent 中的消息,然后让 childAdded 观察者处理初始调用后发送的消息。
在 firebase documentation 中,它说我可以从代码的这个 sn-p 中获取服务器时间戳值 firebase.database.ServerValue.TIMESTAMP
如何为 Swift 3 编写这个?
【问题讨论】:
-
我很确定 refs 是由时间戳添加的,所以我认为甚至不需要任何排序
-
也就是说,除非你正在做某种加入
-
另一种解决方案是使用
limitToLast,然后在客户端进行排序。例如。messages.sort { $0.timestamp > $1.timestamp } -
它们是按升序排列的 - 我对 limitToLast 的问题是,当谁知道用户可能有多少未读消息时,您必须想出一个任意数字
-
我想另一种解决方案可能是使用 observeSingleEvent 使用 .value 来计算有多少消息,然后使用 limitToLast 使用该数字进行初始提取
标签: ios swift firebase firebase-realtime-database