私はこれに似たタスクを実行しようとしています:
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Entry"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(version == %@)", @"1.0"];
[request setPredicate:predicate];
NSArray *results = [[AppDelegate applicationDelegate].managedObjectContext executeFetchRequest:request error:nil];
int i = 0;
while (i < results.count) {
Entry *entry = [results objectAtIndex:i];
entry.version = @"1.1";
i++;
}
しかし、すべての結果を処理する前にメモリが不足します。
私はこれを認識しています:
[request setFetchBatchSize:20];
しかし、それが私が持っているものでどのように機能するのだろうか?20 件の結果が表示されたら処理を停止しますか、それとも最初の 20 件の結果を取得してから次の 20 件を取得して続行しますか?
私が本質的に求めているのは、特定の量のデータのみを取得し、メモリ不足になるのを止めてから、別のバッチを取得する方法です。