Ios 如何从Firebase获得按时间顺序排列的最新帖子?

Ios 如何从Firebase获得按时间顺序排列的最新帖子?,ios,objective-c,firebase,firebase-realtime-database,Ios,Objective C,Firebase,Firebase Realtime Database,我正在开发一个应用程序,其中使用了类似Facebook的新闻源,我使用Firebase作为数据库。一切都很好,我只需要及时去拿帖子 FIRDatabaseQuery * query = [[[_firebaseReference child:@"Demo"]child:@"posts"]queryLimitedToFirst:100]; [query observeSingleEventOfType:FIRDataEventTypeValue withBlock:^(FIRDataSnapsh

我正在开发一个应用程序,其中使用了类似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中的数据与数据库中的数据相同,但我希望该数据帖子能够根据时间进行排序,那么如何使用查询呢

我的文章在数据库中的结构如下


谢谢

例如,通常人们会将输入的数组附加到collectionView或tableView中,但在您的情况下,您可以[myMutableArray insertObject:myObject atIndex:0];现在,当您通过快照进行枚举时,每个帖子都将添加到数组的前端

以筛选子属性上的节点,请调用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);

    }
}];

大致基于我在这里的回答:

谢谢你的重播..这不是问题,我已经在将snapshot.value存储到字典中,我只需要按照最新的时间对每个帖子进行排序。你不创建字典数组吗?如果你有很多帖子,那么它将是你的数据数组,这就是你排序的时候。我还拍摄了一张快照并将其放入字典中,然后我添加了一个数组,我可以按顺序获取最新的帖子。您是否创建了一个类来保存帖子数据?如果没有看到,那么除了向您指出之外,很难做更多。我已经编辑了我的问题,请查看请将JSON作为实际的JSON文本发布,您可以通过单击数据库中的Export JSON链接来获取。除此之外,它看起来像query.queryOrderedbyChild:dateTime,然后在快照上进行循环就可以实现这一点。您是否阅读了文档中的查询?是的,我知道,但我不知道它到底是如何工作的。。!这就是为什么我需要帮助。。!使用firebase Queries好的,我试试这个。。!