2017-03-07 126 views
-1

我正在使用其中Facebook使用新聞Feed的應用程序,並且使用Firebase作爲數據庫。一切工作正常,我只需要時間明智地獲取帖子。如何從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的數據是相同的數據庫,但我想這些數據(後)來獲取排序關於時間,那麼如何使用查詢?

結構我的數據庫後如下

enter image description here 感謝

+0

在沒有看到[最少的代碼能重現問題(HTTP://計算器(https://firebase.google.com/docs/database/ios/lists-of)的[Firebase數據庫文檔]將很難做到更多工作。 -data#sorting_and_filtering_data)。 –

+0

我編輯了我的問題,請查看 –

+0

請將JSON作爲實際的JSON文本發佈,您可以通過點擊[Firebase數據庫控制檯](https://console.firebase.google。 COM /項目/ _ /數據庫/數據/)。 –

回答

0

通常人們他們送入collectionViewtableView(例如),但在你的情況,你可以[myMutableArray insertObject:myObject atIndex:0];現在,當你的陣列追加通過您的snapshot枚舉每個帖子將被添加到您的前面array

+0

謝謝你的重播..沒有問題,我已經存儲snapshot.value字典,我只需要按時間排序每個職位作爲最新的方面 –

+0

不要你創建一個你的字典數組?如果你有很多帖子,那麼它會是你的數據的數組,這是你排序的時候。我還拍攝一張快照並將其放入字典中,然後追加一個數組,我可以按順序獲得最新的帖子。 –

+0

您是否創建了一個類來保存發佈數據? –

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

+0

好吧,我會試試這個..! –

相關問題