请考虑以下代码:
[context performBlock:^{
// add a bunch of objects to context
NSError *error;
if(![context save:&error])
NSLog(@"Couldn't save MOC because of error: %@", error.localizedDescription);
}];
这是在“商店经理”类中,该类包含2个MOC的getter:标准.objectContext
和.backgroundObjectContext
,使用以下内容进行初始化:
backgroundObjectContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
backgroundObjectContext.parentContext = self.objectContext;
我的问题:当我将context
设置为self.objectContext
时,一切正常,数据会保存到.sqlite文件中。当我将其设置为self.backgroundObjectContext
时,没有数据写入sqlite文件,但save:
返回YES
没有错误。我尝试记录上下文的registeredObjects
,一切都在那里。为什么数据不会写入sqlite文件?
我一直在使用新的MOC iOS 5 API,这是我第一次遇到这个问题,所以我很无能为力。你是如何在iOS 5中初始化背景MOC的?还有什么我可能会在这里失踪?
答案 0 :(得分:3)
保存childContext时,更改将与parentContext合并。要写入文件,您需要在根目录中保存上下文。
所以在这种情况下:
保存backgroundObjectContext以使用objectContext合并更改
您保存objectContext以保存到PSC