如何将 CoreData SQLite 支持的持久存储克隆到“内存中”?

Posted

技术标签:

【中文标题】如何将 CoreData SQLite 支持的持久存储克隆到“内存中”?【英文标题】:How to clone a CoreData SQLite backed persistent store to "in memory"? 【发布时间】:2013-08-13 00:01:32 【问题描述】:

我想在内存中创建我的 CoreData 结构(不是数据)的克隆。这将允许我使用新的 CoreData 堆栈编写单元测试,而不必处理当前存储在实际 SQLite 数据库中的数据。

作为旁注,我正在使用 MagicalRecord,这可能有帮助,也可能没有帮助。

我对单元测试的想法如下:

- (void)setUp 期间打开应用 CoreData 存储 (SQLite) 克隆存储到内存 关闭持久性 SQLite 存储 打开刚刚创建的内存存储 删除内存中的所有数据 运行我的测试

有什么想法吗?还是更好的解决方案?

谢谢

【问题讨论】:

为什么不跳过步骤 1、3、4 和 5?在我看来,它们并不需要。我会在假设您只需要基于您的模型的空商店的情况下写一个答案。 【参考方案1】:

MagicalRecord 包含一个名为[MagicalRecord setupCoreDataStackWithInMemoryStore] 的函数。这将根据您的数据模型创建一个内存存储。不需要复制或您提到的任何内容,因为这种类型的存储不是持久的(您说过在实际使用之前无论如何都会将其全部删除)。所以不用担心克隆SQL版本,设置一个内存版本就可以使用了。

【讨论】:

【参考方案2】:

我建议遵循我写的这个指南:http://www.cimgf.com/2012/05/15/unit-testing-with-core-data/

它通过内存存储设置堆栈以供单元测试使用。

【讨论】:

以上是关于如何将 CoreData SQLite 支持的持久存储克隆到“内存中”?的主要内容,如果未能解决你的问题,请参考以下文章

尽管匹配 x-coredata id,但“CoreData 不支持持久的跨存储关系”

Coredata — 入门使用

核心数据/SQLite 存储偶尔数据丢失

iOS CoreData

Swift下CoreData的使用

彻底掌握Xcode CoreData调试技巧看这一篇就够了