获取时子 Moc 没有获得最近的更改

Posted

技术标签:

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

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

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

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

有什么想法吗?

【问题讨论】:

【参考方案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)

【讨论】:

很好的建议,我相信这可能是原因。我会去的

以上是关于获取时子 Moc 没有获得最近的更改的主要内容,如果未能解决你的问题,请参考以下文章

Angular Frontend - 如何更改从前端获得的值

子状态更改时子不重新渲染

一个线程中对 MOC 属性的更改未传播到主线程

为啥 Qt Creator 在我的所有文件上运行 MOC?

Dapper多表查询时子表字段为空

获取位置的 GPS 状态已更改