【问题标题】: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)