2

如果我有 3 个 NSManagedObjectContexts。

A. 是根上下文。

B.是一个后台保存上下文,解析一个JSON后生成NSManagedObjects

C. 是在 NSFetchedResultsController 中使用的子上下文

布局是这样的

  A
 / \
B   C

当我在 B 中进行更改时,我告诉 B 保存,然后我告诉 B.parent 保存。我的想法是它会触发 C 向我的 UITableView 发送更新,它支持它。

我的理论正确吗?还是我需要做其他事情才能让 C 查看来自 A 的更新。我希望更改在进行时弹出到 tableview 中。

具体来说,我试图了解这些孩子如何响应其父上下文中的变化,以及这如何导致 NSFetchedResultsController 触发更新。

4

1 回答 1

1

由于保存只会将更改向上推送一级,因此 managedObjectContext 的子级只有在您再次获取时才会获得对其父上下文所做的更改。

有关嵌套上下文如何工作的更多信息,请查看来自 WWDC 2011的视频What's New in Core Data for iOS 。

无论如何,在您的示例中,如果 A 正在数据库中写入和读取,以及 B,您为什么不让 C 成为 B 的孩子?这样,保存 C 也将更新 UI,而保存 B 将推送更改并将它们排队保存。

于 2013-06-18T13:59:50.727 回答