2012-02-13 71 views
0

考虑下面的代码:背景MOC的“保存:”有没有影响(但返回YES)

[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个MOCS干将:标准.objectContext和一个.backgroundObjectContext,这与初始化如下:

backgroundObjectContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType]; 
backgroundObjectContext.parentContext = self.objectContext; 

我的问题:当我设置contextself.objectContext,一切都很好,并将数据保存到.sqlite网络乐。当我将它设置为self.backgroundObjectContext时,没有数据写入sqlite文件,但​​返回YES,没有错误。我试着记录上下文的registeredObjects,一切都在那里。数据如何不写入sqlite文件?

我一直在使用新的MOC iOS 5 API一段时间,这是我第一次遇到这个问题,所以我很笨。你是如何初始化iOS 5中的后台MOC的?还有什么我可能会在这里失踪?

回答

3

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

因此,在这种情况下:

  • 保存backgroundObjectContext合并与ObjectContext的

  • 改变你保存的ObjectContext保存到PSC

+0

这是它,谢谢!不知何故,我总是最终保存了父母MOC,这也解释了为什么我从未在这个问题上偶然发现过。 – samvermette 2012-02-13 18:58:45