【问题标题】:Child Moc not getting recent changes when fetching获取时子 Moc 没有获得最近的更改
【发布时间】:2013-12-07 22:44:52
【问题描述】:

我有一个 1 父母 2 孩子 moc 情况。 其中1个是主界面moc,另外1个是私有队列,用于云端同步变更。

我遇到了私有云同步子模块保存更改的情况,父级可以看到更改但其他界面子模块没有。

我有一个名为 Team 的实体,它有一个名为 TeamMembers 的一对多关系字段。在私有队列上保存后,我在父 moc 上获取团队实体并正确获取所有更改。 之后,我获取接口子 moc 并且没有得到更改。 如果我创建另一个子 moc,我会得到更改。

有什么想法吗?

【问题讨论】:

    标签: cocoa core-data nsmanagedobjectcontext


    【解决方案1】:

    我遇到了同样的问题,因为似乎接口上下文中的任何缓存对象都不会被父上下文自动更新。为了处理这个问题,我向 NSManagedObjectContextDidSaveNotification 添加了一个观察者,如下所示:

    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(contextDidSave:)
                                                 name:NSManagedObjectContextDidSaveNotification
                                                object:parentContext];
    

    并手动将保存到父上下文的更改合并到默认上下文中:

    - (void)contextDidSave:(NSNotification *)notification {
        SEL selector = @selector(mergeChangesFromContextDidSaveNotification:); 
        [interfaceContext performSelectorOnMainThread:selector withObject:notification waitUntilDone:YES];
    }
    

    这似乎是我所看到的这个问题的标准解决方案(即Core Data merge two Managed Object Context

    【讨论】:

    • 很好的建议,我相信这可能是原因。我会去的
    猜你喜欢
    • 1970-01-01
    • 2013-02-25
    • 1970-01-01
    • 1970-01-01
    • 2017-06-20
    • 1970-01-01
    • 2015-04-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多