我正在执行一个返回大约 2000 个实体的获取请求。目前,这在我的设备上大约需要 20 秒。所以我想我可能会设置一个 100 的获取限制,然后当用户滚动到表格视图的末尾时,获取接下来的 100 个实体。这可以使用NSFetchRequest's
setFetchLimit
和来完成setFetchOffset
。
但是,我想不通的是,如果在我第二次提取对象 101-200 时,对象 1-100 会发生什么?我是否必须为每 100 个项目使用单独NSFetchedResultsController
的,然后将我的表视图数据源方法配置为基于多个获取结果控制器进行查询?或者我可以NSFetchedResultsController
以某种方式一次获取 100 个实体,但是在每次后续获取时,只需将接下来的 100 个项目添加到原始的 100 个项目中?
编辑:这是我的代码:
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription
entityForName:@"MessageObject" inManagedObjectContext:appDelegate.managedObjectContext];
[fetchRequest setEntity:entity];
NSPredicate *predicate= [NSPredicate predicateWithFormat:@"ANY tags.tagName==%@", currentTagObject.tagName];
[fetchRequest setPredicate:predicate];
NSSortDescriptor *sort= [[NSSortDescriptor alloc] initWithKey:@"createDate" ascending:NO selector:@selector(compare:)];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sort]];
[fetchRequest setFetchBatchSize:5];