与CoreData(iOS)中的轻量级迁移相比,何时使用自定义迁移
我正在用核心数据创建一个应用程序。到目前为止,我一直在使用轻量级迁移进行CoreData迁移与CoreData(iOS)中的轻量级迁移相比,何时使用自定义迁移,ios,objective-c,core-data,Ios,Objective C,Core Data,我正在用核心数据创建一个应用程序。到目前为止,我一直在使用轻量级迁移进行CoreData迁移 我可以知道什么时候应该使用自定义迁移吗 与自定义迁移相比,轻量级迁移有什么缺点吗 我的简短回答如下 光迁移发生在SQLite级别,并自动处理(创建存储时需要设置正确的选项参数)。没有对象加载到内存中,内存需求很低。一般来说,这种类型的迁移(非常)快 相反,大规模移民比第一次移民更困难。执行它意味着将每个实体加载到内存中,并进行转换 它从旧的存储到新的存储,最后写回磁盘。通常它是在后台执行的,因为这可能需
我的简短回答如下 光迁移发生在SQLite级别,并自动处理(创建存储时需要设置正确的选项参数)。没有对象加载到内存中,内存需求很低。一般来说,这种类型的迁移(非常)快 相反,大规模移民比第一次移民更困难。执行它意味着将每个实体加载到内存中,并进行转换 它从旧的存储到新的存储,最后写回磁盘。通常它是在后台执行的,因为这可能需要时间,所以您应该警告用户正在进行某种类型的处理。这需要开发人员执行更多的工作,因为他需要告诉核心数据如何迁移 这么说,是你的朋友。例如,关于第一种类型的迁移: 轻量级迁移在迁移的早期阶段尤其方便 应用程序开发,当您可能正在更改托管对象时 经常建模,但您不希望必须不断重新生成测试 数据。您可以迁移现有数据,而无需创建自定义 映射用于创建存储的每个模型版本的模型 需要迁移 此外,你还可以在谷歌上找到其他参考资料
此外,在所有情况下,您都应该避免在iOS上进行大量迁移 它最初不是为在iOS设备上运行而设计的,因此会导致更多问题 问题比它值得的多。如果不能使用轻量级迁移 (哪一个是最好的选择)那么做一个导出/导入就更好了 而不是做一次体重过重的迁移
此外,在所有情况下,您都应该避免在iOS上进行大量迁移,因为它最初不是设计用于在iOS设备上运行的,并且会导致更多的问题。如果您不能使用轻量级迁移(这是最好的选择),那么执行导出/导入要比执行beavy-weight迁移好得多。@MarcusS.Zarra完全同意您的观点。自定义迁移可能很难实现。这需要时间和对核心数据的充分了解。我不知道有多少人能使用它,除了你,很明显;)我不使用它:)@flexaddicted我也学会了使用你在这里提到的链接进行迁移。但是我想知道使用轻量级迁移与定制相比有什么缺点?@MarcusS.Zarra我已经在我的编辑中插入了您的评论。让我知道我是否可以在我的答案之内。我认为进出口建议很有用。干杯