【发布时间】:2011-07-11 01:07:40
【问题描述】:
简介
我的 iOS 项目附带了一个重约 160MB 的 SQLite 格式的 Core Data 持久存储。那里有大量的分组信息,用户应该能够在其中标记收藏夹。为此,我需要(至少部分)数据库具有写入功能。但当然,应用程序包中的持久存储在设计上是只读的。
如果您希望商店具有读写功能,则应将其复制到,例如应用程序的文档文件夹。我不想这样做,因为那样应用程序的大小将是原来的两倍,而该数据库的主要部分无论如何都是只读的。那会浪费资源。
NSPersistentStoreCoordinator 的多个持久存储
这就是我想到使用两个持久存储的原因。第一个是捆绑包中的大的,第二个可能是文档文件夹中的一个小,存储与大存储有关系的特殊“最喜欢”的实体。
我知道在这方面有一些可能,但我找不到具体细节。如果您还有多个对象模型,是否应该只使用多个商店?一个对象模型可以“分布”在两个持久存储上吗?浏览Core Data Programming docs 时,我找不到任何关于如何设置的真正参考。此外,Marcus Zarra 的书似乎也没有深入探讨这个主题:
可以向 NSPersistentStoreCoordinator 添加多个 NSPersistentStore,这在处理拆分为多个文件的数据时非常有用。但是,在我们的示例中,我们只有一个文件。 (Marcus Zarra: "Core Data - Apple's API for Persisting Data on Mac OS X" page 71)
问题
谁能告诉我我的想法是否可以通过 Core Data 和多个持久存储实现?您能否提供有关如何实现这一目标的提示?非常感谢处理该主题的在线/离线资源。
【问题讨论】:
-
我几乎想通了,请参阅stackoverflow.com/questions/10951844/… 示例项目
-
你把它复杂化了。将 db 从包中复制到库文件夹并完成。
-
考虑到你要么对一个 2 岁的问题发表评论,要么对这个问题发表 1 年的评论,你在这里不是很有建设性,@Rog。该应用程序的数据库现在接近 250 Megs,我认为它的用户只喜欢它一次。
标签: objective-c cocoa-touch core-data multiple-databases