关于coreData 分页查询的问题。
NSMutableArray * temArray = [[NSMutableArray alloc]init];
NSManagedObjectContext *context = [NSManagedObjectContext MR_defaultContext];
NSPredicate *trackTableFilter;
trackTableFilter = [NSPredicate predicateWithFormat:@"latest_status=%@", @"InTransit"];
//获取查询条件
NSFetchRequest * request = [TrackTable MR_requestAllWithPredicate:trackTableFilter inContext: context];
//设置排序字段
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"isTopDate" ascending:YES];
//设置排序数组
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[request setSortDescriptors:sortDescriptors];
[request setIncludesPendingChanges:YES];
//设置分页查询数目
[request setFetchLimit:10];
//设置查询起始
[request setFetchOffset:pageCount*10];//问题出在这一部分:假如数据有 15 条数据,用户上拉加载至第二页的时候,数据库的所有数据已经全部加载完毕,此时再加入1 条数据(也就是第 16 条数据),这是用户再使用上拉加载的功能的时候,无法加载出第二条数据,因为现在的 pageCount已经是第2 页了,应该是从第 20 条开始加载,但是现在数据库只有 16 条数据,无法加载第16 条数据。我不知道怎么解决了。恳请帮助。非常感谢。🙏。
//执行查询语句 并返回数组
NSArray * arrayss = [TrackTable MR_executeFetchRequest:request];
想尝试使用类似于 select id >XX limit 10,但是 CoreData 不知道如何实现。
可以把
fetchOffset
设置成当前数据量。[request setFetchOffset:count];
第一次查询,
count
为0
,加载下一页时,count
为10
,再加载下一页时count
为15
。