在我的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];
}
让我们说用户到达最后一篇帖子并希望获取较旧的帖子,我该怎么做?
我正在考虑在查询中使用日期,但我不确定如何 或者我应该在帖子模型中引入一个序列字段并根据该字段获取(尽管我不认为这是正确的方法)。 另外,我如何加载更新的帖子?
由于
答案 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: