約2000個のエンティティを返すフェッチ要求を実行しています。現在、これは私のデバイスでは約20秒かかります。そのため、フェッチ制限を100に設定し、ユーザーがテーブルビューの最後までスクロールしたら、次の100個のエンティティをフェッチすることを考えました。NSFetchRequest's
setFetchLimit
これは、とを使用して実行できますsetFetchOffset
。
しかし、私が理解できないのは、オブジェクト101〜200をフェッチしている2回目のフェッチで、オブジェクト1〜100はどうなるのかということです。NSFetchedResultsController
100アイテムごとに個別に使用してから、複数のフェッチ結果コントローラーに基づいてクエリを実行するようにテーブルビューのデータソースメソッドを構成する必要がありますか?または、同じものを使用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];