2017-06-14 30 views
0

在我的iOS應用中,用戶可以發佈帖子,以便其他用戶可以在其他帖子中查看該帖子。 現在我遇到了在初始抓取後獲取新舊帖子的邏輯問題。批量加載對象的最佳方式

當用戶打開該帖子視圖控制器這是被調用來獲取接近他的位置,最後40個職位的方法,所以目前(我使用的解析SDK和解析後端服務器)

+(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

首先你需要找到最古老的職位(因爲你是顯示某種時間表的我假設你按日期排序已它們)。保留最早的日期(例如:oldestDate),然後查詢使用也(標杆需要)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 


你又一批:

  • 使用您下載的最後一個職位的createdAt/updatedAt。使用替代
  • limit/skipwhereKey:lessThan: