我有以下代码将新实体插入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];
是的,您可以在循环后保存上下文。这比每次迭代保存都好。如果您查看MagicalRecord src,则将看到MR_contextForCurrentThread
,如果没有线程的上下文MagicalRecord创建它,则对于相同的线程始终返回相同的上下文。
另外,您不需要传递context [_entityClass createInContext:context]
,只需[_entityClass MR_createEntity]
-它将在当前线程的context中创建
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句