获取时子 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 没有获得最近的更改的主要内容,如果未能解决你的问题,请参考以下文章