新しいエンティティを Core Data モデルに (Magical Record 経由で) 挿入する次のコードがあります。
- (void)insertWithData:(NSDictionary *)dataDictionary {
DLog(@"Inserting %@", [_entityClass description]);
NSManagedObjectContext *context = [NSManagedObjectContext contextForCurrentThread];
id entity = [_entityClass createInContext:context];
[entity setValuesFromDictionary:dataDictionary];
if ([entity isKindOfClass:[Syncable class]]) {
[entity setValue:YesNumber forKey:@"syncedToServer"];
}
[context save];
}
このコードは、別のクラスから呼び出された FOR ループで複数回実行されるため、パフォーマンスを最適化するために、ループが完了した後にのみコンテキストを保存したいと考えています。
私の質問は、これを行う最善の方法は何ですか? ここでコンテキストへの参照を保存し (アプリ デリゲートなど)、この参照を使用して呼び出し元のクラスに保存する必要がありますか? または、呼び出し元のクラスで NSManagedObjectContext contextForCurrent Thread を再度呼び出して、この参照を使用することもできます。つまり、呼び出し元のクラスで:
NSManagedObjectContext * context = [NSManagedObjectContext contextForCurrentThread];
[context save];