Lap*_*nou 3 migration mapping model core-data ios
我希望你一切都好:)
我有一个使用 Core Data 的数据库。在我的应用程序 V1.0 中,用户可以在应用程序中导入一些文件。现在,对于我的 V2.0,我想在我的模型中添加一个属性,但是拥有 V1.0 并且有一些存储文件的用户必须保存所有文件(如果他们升级应用程序,则不会删除......) . 因此,我创建了一个具有新属性的新数据模型,并将当前版本化的核心数据模型设置为我的新数据模型……好的。但是如果启动我的应用程序,该文件将被删除。
通常,我必须使用映射模型。但是怎么做呢?创建映射模型时,源数据模型和目标数据模型是哪个?
非常感谢你的帮助!祝大家有个美好的一天!:)
编辑:
如果我只添加一个新属性而不编辑属性的名称,也许我不需要创建映射模型...不是吗?
小智 5
如果使用映射模型,您的源模型将是 v1.0 模型,目标将是您的新 v2.0 模型。通过使用轻量级迁移,您可以在不使用映射模型的情况下脱身,文档在这里。
这句话的要点是您需要转到您的 App Delegate 并为持久存储设置相关选项。
它应该看起来像
NSDictionary *options = @{NSMigratePersistentStoresAutomaticallyOption: @YES, NSInferMappingModelAutomaticallyOption: @YES};
[persistentStoreCoordinator addPersistentStoreWithType:storeType configuration:config URL:storeURL options:options error:&error];
Run Code Online (Sandbox Code Playgroud)
该NSMigratePersistentStoresAutomaticallyOption键告诉 Core Data 检查当前托管对象模型版本是否与您正在使用的商店不同,并将商店迁移到更新的模型。该NSInferMappingModelAutomaticallyOption告诉它来尝试映射出自身。这是“轻量级迁移”位。
其中大部分已经存在,您需要做的就是添加选项字典。它将在- (NSPersistentStoreCoordinator *)persistentStoreCoordinator方法中。如果您至少没有设置,NSMigratePersistentStoresAutomaticallyOption则不会发生迁移。
轻量级映射在开发过程中也很有用。这意味着您可以对模型进行更改,而无需每次都重做映射。
| 归档时间: |
|
| 查看次数: |
2789 次 |
| 最近记录: |