何时使用自定义迁移与CoreData(iOS)中的轻量级迁移相比

时间:2014-03-13 11:06:12

标签: ios objective-c core-data

我正在使用Core Data创建应用程序。到目前为止,我使用轻量级迁移进行CoreData迁移。

  1. 我可以知道何时应该使用自定义迁移吗?

  2. 与自定义迁移相比,轻量级迁移有任何缺点吗?

1 个答案:

答案 0 :(得分:1)

我的简短回答如下。

轻量级迁移发生在SQLite级别,并自动处理(您需要在创建存储时设置正确的选项参数)。没有对象加载到内存中,内存要求很低。通常,这种类型的迁移(非常)快。

相反,重度迁移比第一次迁移更困难。执行它,意味着将每个实体加载到内存中,翻译 它从旧商店到新商店,最后写回磁盘。通常它是在后台执行的,因为它可能需要一些时间,所以你应该警告用户正在进行某种类型的处理。它需要开发人员执行更多工作,因为他需要向Core Data说明如何迁移。

说这个, Apple documentation是你的朋友。例如,关于第一种类型的迁移说:

  

轻量级迁移在早期阶段特别方便   应用程序开发,当您可能正在更改托管对象时   经常建模,但你不想继续进行再生测试   数据。您无需创建自定义即可迁移现有数据   用于创建商店的每个模型版本的映射模型   需要迁移。

此外,您还可以找到其他参考资料。

修改1

总结一下。自定义更复杂。 作为开发人员,您有责任指定Core Data迁移的方式。所以,你需要手动完成。它很慢,通常需要很多时间才能理解发生了什么。相反,光是自动且快速的。您只需要设置选项,Core Data会照顾您。另见 Marcus Zarra 评论。特别是,

  

此外,您应该避免在iOS上的所有情况下进行大量迁移   它最初并不是设计用于在iOS设备上运行并导致更多   问题比它值得。如果您不能使用轻量级迁移   (这是最好的选择)然后进行出口/进口要好得多   而不是做一个重量级的迁移。