我最初认为我的问题的答案是简单的“是”,但从那以后我所做的一些阅读让我再次看到了这个问题。
我的意图是使用模块化代码,这让我可以从多个代码部分中进行选择,以向应用程序添加各种功能。例如,我可能有一个允许安全浏览的浏览器组件、一个用于进行用户调查的调查组件,以及一个作为应用程序主要用途的“核心”组件——无论是显示菜单还是显示地图的一个位置。
我希望每个独立的模块都有自己的 CoreData 堆栈。除了由应用程序本身介导的任何事情(使用委托模型完成的与应用程序的通信)之外,它们不会以任何方式相互交谈或相互干扰。浏览器的书签列表和列入白名单的站点与调查的调查数据列表是分开的,这也与应用程序的“核心”所做的任何事情完全分开。如果他们需要相互交谈,他们可以通过委托调用来实现,这将包括告诉应用程序“我需要一个浏览器来显示 X 页面”、“使用这个 id 显示调查”,或者最后是“我是完成,返回主应用程序”。
让我开始走这条路的是意识到没有办法确定给定的 NSManagedObjectContextDidSaveNotification 是否属于给定的核心数据堆栈。而且,据推测,在 mergeChangesFromContextDidSaveNotification: 方法中向 MOC 提供来自不同核心数据堆栈的通知将是一个坏主意。(我也担心当你尝试将 MOC 自己的通知反馈给它时会发生什么,但这是我可以很容易地尝试的东西)