2016-09-15 7 views
1

私は遅い読み込みの記事を表示するコレクションビューを実装しようとしています。一度に15の投稿だけを読み込み、最後にダウンロードした投稿を変数に保存してqueryStartingAtValue私は結果が、snapshot.valueが適切にソートされ得るが、私はこの行を書き行うとき:奇妙なFirebase IOS queryStartingAtValueが間違った順序を返します

NSDictionary *retrivedData = snapshot.value; 

retrivedData辞書はめちゃくちゃ取得し、順番が間違っています。

FIRDatabaseReference *dbRef = [[[[FIRDatabase database]reference] child:POSTS_FOR_CHALLENGES] child:challengeID];  
    [[[[dbRef queryOrderedByKey] queryStartingAtValue:lastPostID] queryLimitedToFirst:15] observeSingleEventOfType:FIRDataEventTypeValue withBlock:^(FIRDataSnapshot * _Nonnull snapshot) { 
      //sort the keys of the dictionary/json alphabetically 
      NSMutableDictionary *posts = snapshot.value; 
      if(sortedValues.count > 0) 
      { 

       lastPostID = [snapshot.value allKeys].lastObject 
      } 
      [connector postsForChallengeRetrived:posts]; 

     }]; 

私がretrivedDataのキーをソートすることによってそれを解決するために管理:とそのためのIM lastPostIDはいつも私のクエリ・コードのthats

同じであるため、すべての異なるクエリに対して同じ結果を得続けますクライアント側が良い解決策ではない、任意のアイデア?

答えて

3

snapshotには順序付けられた結果が含まれています。しかし、あなたがsnapshot.valueを要求すると、その結果は本質的に順序付けられていない辞書に変換されます。

すぐに辞書に変換する代わりに、loop over snapshot.childrenとすると、正しい順序で検索されます。

関連する問題