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

时间:2013-12-07 22:44:52

标签: cocoa core-data nsmanagedobjectcontext

我有1父2孩子moc的情况。 其中1个子接口是主接口moc,另一个是用于在云上进行同步更改的专用队列。

我遇到私有云同步子mod保存更改的情况,父母可以看到更改,但另一个接口子moc没有。

我有一个名为Team的实体,它有一个叫做TeamMembers的to-many关系字段。保存在私有队列后,我在父moc上获取Team Entity并正确获取所有更改。 之后,我获取接口子moc并没有得到更改。 如果我创建另一个孩子moc,我确实得到了更改。

有什么想法吗?

1 个答案:

答案 0 :(得分: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