我有下面的代码插入一个新的实体到核心数据模型(通过神奇的记录):在后期保存上下文 - 将指针保存到上下文?核心数据
- (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线程中调用类,并使用这个参考 - 在调用的类即:
NSManagedObjectContext * context = [NSManagedObjectContext contextForCurrentThread];
[context save];
对不起,这是错误的。首先,现在不推荐使用contextForCurrentThread。它已经在MagicalRecord 3.0中被删除,所以现在是习惯不使用它的时候了。您可以指定上下文,但应该使用限制上下文,并将默认上下文作为父级,或者让它观察新上下文中的更改,并在保存时合并它们。 – casademora