以此工作流为例:

NSFetchedResultsController绑定到了主MOC,但是主MOC并没有做真正的保存操作,它会传播到后台Writer MOC,当后者保存到PSC时,如何通知NSFetchedResultsController?
我做了一个演示来测试它,它工作了,但不能弄清楚为什么它工作?
发布于 2013-06-17 09:53:01
将数据保存到持久性存储时,主MOC不会收到通知。
但是,数据最终进入后台编写器MOC的唯一方式是通过临时后台MOC,它通过UI MOC。因此,每当临时后台MOC将其数据向上传播到UI时,NSFetchedResultsController都会收到通知,然后一个单独的线程将其保存到PSC。
当NSFetchedResultsController收到通知时,数据实际上不在sqlite数据库中,但它不一定要在sqlite数据库中。
从您的save方法中也可以明显看出:
- (void)save
{
[self.mainContext performBlock:^{
NSError *mainContextError;
if(![self.mainContext save:&mainContextError]) {
NSLog(@"main context error:%@", mainContextError);
}
[self.masterContext performBlock:^{
NSLog(@"saving in masterContext");
NSError *masterContextError;
if (![self.masterContext save:&masterContextError]) {
NSLog(@"master context error:%@", masterContextError);
}
}];
}];
}调用[self.mainContext save]后,会通知NSFetchedResultsController。
https://stackoverflow.com/questions/17139087
复制相似问题