核心数据 - 多个持久存储

6

我需要帮助理解CoreData。

假设我已经安装了MagicalRecords和RestKit,并且我还有一个服务器,可以返回一些posts。然后我需要将其中一些posts保存到设备内存中,以便用户稍后可以阅读这些文章(即使没有互联网连接)。为了不浪费内存,很明显我应该使用内存存储,我已经这样做了。但是为了保存这些post,我肯定需要SQLite或其他东西,这让我感到无助。

问题是,苹果公司并没有提供关于如何处理这种情况的详细信息,而且搜索也没有帮助。我猜我必须制作两个持久性存储库和两个配置:默认和“保存”配置。我已经找到了制作两个持久性存储库的方法,但现在我不明白如何使用它:如何在确切的存储库中创建和保存实体,如何在存储库之间传输它们,这将如何与RK和MR交互?
任何帮助都将不胜感激。链接、信息、代码片段。


2
“为了不浪费内存,显然我应该使用内存存储” - 这是什么意思?你应该尽可能地在内存中存储最少量的信息... - Wain
@Wain 我的意思不是要诋毁设备的 ROM(或者是闪存?),所以我需要使用 RAM,也就是内存持久存储。 - Alexey Drozhzhin
1个回答

19

通常情况下,

如果您在不同的持久化存储中使用不同的实体,

请使用不同的命名配置设置数据模型。每个配置定义了包含一个或多个实体的模型子集。您可以在模型编辑器中进行此操作。当您通过调用addPersistentStoreWithType:configuration:URL:options:error:添加持久化存储时,请为第二个参数提供配置名称。每次插入新实例时,它将根据配置进入正确的持久化存储。

如果您在多个持久化存储中使用相同的实体,

不要使用配置。相反,在插入新实例后,使用NSManagedObjectContext的方法assignObject:toPersistentStore:告诉它使用哪个持久化存储文件。

当在存储之间移动实例时,

完全由您决定。没有直接的框架支持。您无法使用assignObject:toPersistentStore:将实例重新分配到另一个存储文件中。您需要在不同的存储中创建一个新实例,并自己复制所有属性值和关系。

我不知道MagicalRecord或RestKit如何支持这一点,或者它们是否支持。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接