NSFetchedResultsController 设置为 5 以获取批量大小。我们注意到它的加载速度很慢,所以我们启用了 SQLDebug。出于某种原因,它一次加载 5 行,但它在初始加载时对所有 100 行执行此操作。加载后,它似乎一次加载 5 行。
在看控制台时,我看到查询运行了 20 次;共有 100 行。我原以为这会在前 5 行中运行 1 次,并且当您滚动时,会加载更多行。我还尝试更改提取大小,它具有相同的行为。
获取结果控制器的设置如下。
- (NSFetchedResultsController*) fetchedResultsController {
if (_fetchedResultsController != nil) {
return _fetchedResultsController;
}
[NSFetchedResultsController deleteCacheWithName:@"Root"];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription
entityForName:@"Message" inManagedObjectContext:_context];
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"conversation = %@", conversation];
[fetchRequest setEntity:entity];
NSSortDescriptor *sort = [[NSSortDescriptor alloc]
initWithKey:@"timestamp" ascending:YES];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sort]];
[fetchRequest setFetchBatchSize:5];
NSFetchedResultsController *theFetchedResultsController =
[[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
managedObjectContext:_context sectionNameKeyPath:nil
cacheName:@"Root"];
self.fetchedResultsController = theFetchedResultsController; …Run Code Online (Sandbox Code Playgroud)