【问题标题】:How to get chronologically latest post from Firebase?如何从 Firebase 获取按时间顺序排列的最新帖子?
【发布时间】:2017-03-08 11:04:04
【问题描述】:

我正在开发使用类似 Facebook 的新闻提要的应用程序,并且我使用 Firebase 作为数据库。一切正常,我只需要获取帖子,时间明智。

FIRDatabaseQuery * query = [[[_firebaseReference child:@"Demo"]child:@"posts"]queryLimitedToFirst:100];

[query observeSingleEventOfType:FIRDataEventTypeValue withBlock:^(FIRDataSnapshot * _Nonnull snapshot) {
    if (snapshot.exists) {
        postsDictionary = snapshot.value;
        [self createSocialAppDataSource];
    }
}];

postsDictionary 中的数据与 Database 中的数据相同,但我希望该数据(post)按时间排序,那么如何使用查询?

我的帖子在数据库中的结构如下

谢谢

【问题讨论】:

标签: ios objective-c firebase firebase-realtime-database


【解决方案1】:

要过滤子属性的节点,请调用queryOrderedByChild

然后,当您对 Firebase 数据库执行查询时,可能会出现多个结果。所以快照包含这些结果的列表。即使只有一个结果,快照也会包含一个结果的列表。

所以你需要遍历孩子:

FIRDatabaseQuery * query = [[[[_firebaseReference child:@"Demo"] child:@"posts"] queryOrderedByChild: "dateTime"] queryLimitedToFirst:100];

[query observeSingleEventOfType:FIRDataEventTypeValue withBlock:^(FIRDataSnapshot * _Nonnull snapshot) {
    for ( FDataSnapshot *child in snapshot.children) {

        NSLog(@"child.key = %@",child.key);

    }
}];

大致基于我在这里的回答:IOS Firebase: Loop all key in snapshot.value get messy position

【讨论】:

  • 好的,我试试这个..!
【解决方案2】:

通常人们会将他们输入的数组附加到collectionViewtableView(例如)中,但在您的情况下,您现在可以[myMutableArray insertObject:myObject atIndex:0];,当您枚举snapshot 时,每个帖子都将添加到前面你的array

【讨论】:

  • 谢谢你的重播..这不是问题,我已经将snapshot.value存储到字典中,我只需要将每个帖子排序为最新的时间
  • 您不创建字典数组吗?如果您有很多帖子,那么它将是您的数据数组,那就是您对其进行排序的时候。我还拍摄了一张快照并将其放入字典中,然后我附加了一个数组,我可以按顺序获取最新的帖子。
  • 您是否创建了一个类来保存帖子数据?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-10
  • 1970-01-01
  • 2021-11-29
  • 1970-01-01
  • 2012-07-14
  • 2017-04-20
相关资源
最近更新 更多