首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >子MOC如何知道父MOC的变化?

子MOC如何知道父MOC的变化?
EN

Stack Overflow用户
提问于 2013-06-17 08:45:34
回答 1查看 190关注 0票数 0

以此工作流为例:

NSFetchedResultsController绑定到了主MOC,但是主MOC并没有做真正的保存操作,它会传播到后台Writer MOC,当后者保存到PSC时,如何通知NSFetchedResultsController?

我做了一个演示来测试它,它工作了,但不能弄清楚为什么它工作?

demo

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-17 09:53:01

将数据保存到持久性存储时,主MOC不会收到通知。

但是,数据最终进入后台编写器MOC的唯一方式是通过临时后台MOC,它通过UI MOC。因此,每当临时后台MOC将其数据向上传播到UI时,NSFetchedResultsController都会收到通知,然后一个单独的线程将其保存到PSC。

NSFetchedResultsController收到通知时,数据实际上不在sqlite数据库中,但它不一定要在sqlite数据库中。

从您的save方法中也可以明显看出:

代码语言:javascript
复制
- (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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17139087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档