背景MOC的“保存:”没有效果(但返回YES)

时间:2012-02-13 18:42:36

标签: iphone ios core-data ios5 nsmanagedobjectcontext

请考虑以下代码:

[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的?还有什么我可能会在这里失踪?

1 个答案:

答案 0 :(得分:3)

保存childContext时,更改将与parentContext合并。要写入文件,您需要在根目录中保存上下文。

所以在这种情况下:

  • 保存backgroundObjectContext以使用objectContext合并更改

  • 您保存objectContext以保存到PSC