Ron*_*gge 0 xcode core-data objective-c ios
我最初假设我的问题的答案是简单的“是”,但我从那以后所做的一些阅读让我再次审视了这个问题。
我的意图是使用模块化代码,这让我可以从许多代码部分中进行挑选,以向应用程序添加各种功能。例如,我可能有一个允许安全浏览的浏览器组件,一个用于进行用户调查的调查组件,以及一个作为应用程序主要目的的“核心”组件——无论是显示菜单还是显示地图的一个位置。
我希望每个独立的模块都有自己的 CoreData 堆栈。它们不会以任何方式相互交谈或干扰,除了应用程序本身所介导的任何内容(使用委托模型与应用程序进行通信)。浏览器的书签和白名单站点列表与调查的调查数据列表是分开的,它也与应用程序的“核心”所做的任何事情完全分开。如果他们需要互相交谈,他们可以通过委托调用来实现,其中包括告诉应用程序“我需要一个浏览器来显示 X 页”、“使用此 ID 显示调查”,或者最后“我是完成,返回主应用程序”。
让我开始走这条路的是意识到没有办法确定给定的 NSManagedObjectContextDidSaveNotification 是否属于给定的核心数据堆栈。而且,据推测,在 mergeChangesFromContextDidSaveNotification: 方法中向 MOC 提供来自不同核心数据堆栈的通知将是一个坏主意。(我也担心当您尝试将 MOC 自己的通知反馈回其中时会发生什么,但我可以轻松地尝试这种情况)
您可以(并且在 NSManagedObjectContext 文档中明确推荐)注册来自特定上下文的更改:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(<#Selector name#>)
name:NSManagedObjectContextDidSaveNotification
object:<#A managed object context#>];
Run Code Online (Sandbox Code Playgroud)
当您收到这样的通知时,通知对象是托管对象上下文。因此,可以创建独立的组件,其中每个组件都使用自己的核心数据堆栈。
| 归档时间: |
|
| 查看次数: |
323 次 |
| 最近记录: |