如果使用映射模型,您的源模型将是 v1.0 模型,目标将是您的新 v2.0 模型。通过使用轻量级迁移,您可以在不使用映射模型的情况下摆脱困境,此处的文档。
这句话的要点是,您需要转到您的 App Delegate 并为持久存储设置相关选项。
它应该看起来像
NSDictionary *options = @{NSMigratePersistentStoresAutomaticallyOption: @YES, NSInferMappingModelAutomaticallyOption: @YES};
[persistentStoreCoordinator addPersistentStoreWithType:storeType configuration:config URL:storeURL options:options error:&error];
该NSMigratePersistentStoresAutomaticallyOption
键告诉 Core Data 检查当前托管对象模型版本是否与您正在使用的存储不同,并将存储迁移到更新的模型。告诉它NSInferMappingModelAutomaticallyOption
尝试自己进行映射。这是“轻量级迁移”位。
其中大部分已经存在,您需要做的就是添加选项字典。它将在- (NSPersistentStoreCoordinator *)persistentStoreCoordinator
方法中。如果您至少没有设置,NSMigratePersistentStoresAutomaticallyOption
则不会发生迁移。
轻量级映射在开发时也很有用。这意味着您可以对模型进行更改,而无需每次都重做映射。