【发布时间】:2019-04-06 02:44:10
【问题描述】:
我有一个包含 15 个版本的 Core Data 模型。它的代码可以在发布时从当前商店的版本逐步迁移到最新版本。
关键是调用
NSDictionary* options = @{ NSMigratePersistentStoresAutomaticallyOption : @true,
NSInferMappingModelAutomaticallyOption : @true };
NSDictionary* sourceMetadata = [NSPersistentStoreCoordinator
metadataForPersistentStoreOfType: inType
URL: inSourceStore
options: options
error: outError];
NSManagedObjectModel* model = [NSManagedObjectModel mergedModelFromBundles: @[ [NSBundle bundleForClass: [self class]] ]
forStoreMetadata: inSourceMetadata];
但这总是返回 nil,我不知道为什么。现有商店是14版,新型号是15版。
现在,对模型的最后一次更改相当简单(添加了几个可选字段),所以我原以为它可以自动推断映射,但那不起作用,所以我添加了一个映射模型版本 14 到版本 15 使用 Xcode 的助手,并且没有做任何更改。
知道为什么它返回 nil,或者我可以做些什么来进一步调查?
同样,当我说“版本 14”时,我指的是.xcdatamodel 文件的顺序编号。有什么方法可以查看实际存储并确定 Core Data 认为它是哪个版本的模型?
【问题讨论】: