2017-06-14 3 views
0

私のiOSアプリケーションでは、他のユーザーが他の投稿に沿ってそれを見ることができるように、投稿をすることができます。 これで、最初のフェッチ後に古い投稿と新しい投稿をフェッチするロジックに問題がありました。だから、現在のユーザーが投稿ビューコントローラを開いたとき、これは(私が解析SDKを使用していますし、バックエンドサーバをパース)彼の場所の近くの最後の40件の記事を取得するために呼び出されるメソッドですバッチでオブジェクトをロードする最良の方法

+(NSArray*)fetchLatestPostsNearLocation:(PFGeoPoint*) location 
{ 
PFQuery *query = [PFQuery queryWithClassName:@"Post"]; 
[query setLimit:40]; 
[query whereKey:@"location" nearGeoPoint:location]; 
[query includeKey:@"poster"]; 
NSSortDescriptor* sorter=[NSSortDescriptor sortDescriptorWithKey:@"date" ascending:NO]; 
[query orderBySortDescriptor:sorter]; 
return [query findObjects]; 
} 

としましょうユーザーが最後の投稿に達して古い投稿を取得したい場合は、どうすればよいですか?

私はクエリで日付を使用することを考えていますが、私はどのようにして の投稿のモデルにシーケンスフィールドを導入し、そのフィールドに基づいてフェッチする必要があるのか​​よく分かりません(これは正しいとは思いませんそれを行う方法)。 また、新しい投稿をどのように読み込むのですか?

おかげ

答えて

0

まず、あなたは(あなたがタイムラインのいくつかの並べ替えを見せているので、私はあなたがすでに日付によってそれらをソートしていると仮定)最も古いポストを見つける必要があると思います。あなたはまた、(必要なベンチマーク)ができwhereKey:lessThan:

Date *oldestDate = ... 


PFQuery *query = [PFQuery queryWithClassName:@"Post"]; 
[query setLimit:40]; 
[query whereKey:@"location" nearGeoPoint:location]; 
[query includeKey:@"poster"]; 
[query orderByDescending:@"date"]; 
[query whereKey:@"date" lessThan:oldestDate]; // Get it from function param, check if-nil to only have 1 method for loading & pagination, if possible 

return [query findObjects]; 

// Append new posts to model data, reload tableview/collectionview 


を使用して別のバッチを照会当時と:最も古い日付(oldestDate例えばを):キープあなたがダウンロードした最後のポストの

  • 使用createdAt/updatedAtを。
  • 使用limit/skipの代わりwhereKey:lessThan:
関連する問題