批量加载对象的最佳方法

时间:2017-06-14 18:32:20

标签: ios database parse-platform

在我的iOS应用中,用户可以发帖,以便其他用户可以在其他帖子中查看。 现在我在初始获取后获取旧帖和新帖的逻辑中遇到了一个问题。

所以目前当用户打开Posts View Controller时,这是被调用以获取他所在位置附近的最后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];
}

让我们说用户到达最后一篇帖子并希望获取较旧的帖子,我该怎么做?

我正在考虑在查询中使用日期,但我不确定如何 或者我应该在帖子模型中引入一个序列字段并根据该字段获取(尽管我不认为这是正确的方法)。 另外,我如何加载更新的帖子?

由于

1 个答案:

答案 0 :(得分: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 / skip代替whereKey:lessThan:
相关问题