一个托管对象上下文的两个持久存储 - 可能吗?
Posted
技术标签:
【中文标题】一个托管对象上下文的两个持久存储 - 可能吗?【英文标题】:Two persistent stores for one managed object context - possible? 【发布时间】:2011-03-22 23:02:39 【问题描述】:我有一个相当复杂的数据模型,大约有 10 个实体。有些需要存储到磁盘上,而另一些只需要在应用程序运行时在内存中可用。是否可以为同一个托管对象上下文使用两个持久存储来实现这一点,还是应该相应地分离我的数据模型?
【问题讨论】:
【参考方案1】:是的,您的 NSManagedObjectContext 使用 NSPersistentStoreCoordinator 来确定特定模型应该使用哪个存储。通过设置托管对象上下文的持久存储协调器,您可以定义一个自定义映射,该映射使用多个不同类型的持久存储。
http://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/CoreData/Articles/cdBasics.html#//apple_ref/doc/uid/TP40001650-SW4
【讨论】:
+1 要扩展,您将使用配置并将需要存储在磁盘中的实体放在一种配置中,而将内存中的实体放在另一种配置中。创建商店时,将适当的配置分配给适当的商店。请注意,您不能跨商店使用直接关系,而必须依赖获取的关系。【参考方案2】:您可以使用 TechZen 提到的配置:
-
在托管对象模型编辑器(.xcdatamodel 文件)中创建配置;
在代码中将多个持久存储添加到持久存储协调器,并提供适当的配置名称。
详情请查看我的其他回答here。
【讨论】:
以上是关于一个托管对象上下文的两个持久存储 - 可能吗?的主要内容,如果未能解决你的问题,请参考以下文章