我原本以为我的问题的答案是一个简单的'是',但是自从我做了一些阅读之后,我又一次看到了这个问题。我可以在应用程序中有多个独立的CoreData堆栈吗?
我的意图是使用模块化代码,它允许我从多个代码段中进行选择以向应用程序添加各种功能。举个例子,我可能有一个允许安全浏览的浏览器组件,一个调查组件来接受用户调查,还有一个“核心”组件是应用程序的主要用途 - 无论是显示菜单还是显示地图的位置。
我想让每个独立模块拥有自己的CoreData堆栈。除了应用程序本身介导的任何内容(使用委托模型完成的应用程序通信)之外,它们不以任何方式彼此对话或互相干扰。浏览器的书签列表和白名单网站与调查的调查数据列表不同,它与应用程序的“核心”功能完全分离。如果他们需要彼此交谈,他们可以通过委托调用来实现,这包括告诉应用程序'我需要一个浏览器来显示X页面','用这个ID显示调查',或者最后是“我是完成后,返回到主应用程序“。
我开始意识到没有办法确定给定的NSManagedObjectContextDidSaveNotification是否属于给定的核心数据堆栈。并且,可能的是,在mergeChangesFromContextDidSaveNotification:方法中向MOC提供来自不同核心数据堆栈的通知将是一个坏主意。 (我还担心当您尝试喂MOC自己的通知回它会发生什么,但是这件事情我可以很轻松地实验)
单独堆栈的目的是为了避免额外的工作,试图手动合并每个应用程序的模型 - 它还允许我相对容易地更新模块的模型,因为我可以在一个地方更改它们让git Submodules处理拉动变化。我将不得不通过配置来阅读。 – RonLugge