我有下面的代碼插入一個新的實體到核心數據模型(通過神奇的記錄):在後期保存上下文 - 將指針保存到上下文?核心數據
- (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