• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 迁移核心数据和映射模型

[复制链接]
菜鸟教程小白 发表于 2022-12-13 02:04:53 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

希望你一切都好

我有一个使用 Core Data 的数据库。在我的应用程序 V1.0 中,用户可以在应用程序中导入一些文件。现在,对于我的 V2.0,我想在我的模型中添加一个属性,但是拥有 V1.0 和一些存储文件的用户必须保留所有文件(如果他们升级应用程序则不会删除...) .因此,我创建了一个具有新属性的新数据模型,并将当前版本化的核心数据模型设置为我的新数据模型......好的。但是,如果启动我的应用程序,该文件将被删除。

通常,我必须使用映射模型。但如何做到这一点?创建映射模型时,源数据模型和目标数据模型是哪个?

非常感谢您的帮助! 祝大家有个美好的一天!

编辑:

如果我只添加一个新属性而不编辑属性的名称,也许我不需要创建映射模型...不是吗?



Best Answer-推荐答案


如果使用映射模型,您的源模型将是 v1.0 模型,目标将是您的新 v2.0 模型。通过使用轻量级迁移,您可以在不使用映射模型的情况下逃脱,文档 here .

要点是您需要转到您的 App Delegate 并为持久存储设置相关选项。

应该是这样的

NSDictionary *options = @{NSMigratePersistentStoresAutomaticallyOption: @YES, NSInferMappingModelAutomaticallyOption: @YES};

[persistentStoreCoordinator addPersistentStoreWithType:storeType configuration:config URL:storeURL optionsptions error:&error];

NSMigratePersistentStoresAutomaticallyOption 键告诉 Core Data 检查当前托管对象模型版本是否与您正在使用的存储不同,并将存储迁移到更新后的模型。 NSInferMappingModelAutomaticallyOption 告诉它尝试自行完成映射。这是“轻量级迁移”位。

其中大部分已经存在,您需要做的就是添加选项字典。它将在 - (NSPersistentStoreCoordinator *)persistentStoreCoordinator 方法中。如果您未至少设置 NSMigratePersistentStoresAutomaticallyOption,则不会发生任何迁移。

轻量级映射在开发时也很有用。这意味着您可以对模型进行更改,而无需每次都重做映射。

关于ios - 迁移核心数据和映射模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15828168/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap