在我的应用程序中,我有一个核心数据实体,其属性为value
。我想在即将发布的版本中将此属性的类型从Integer 16
更改为Transformable
。核心数据从整数16迁移到可转换
现在,建立我的持久存储协调的时候,我包括以下内容的选项:我已经建立了我的核心数据模型的第二个版本,其中包括更新到value
属性
let options: [NSString: Bool] = [
NSMigratePersistentStoresAutomaticallyOption: true,
NSInferMappingModelAutomaticallyOption: true]
try coordinator!.addPersistentStoreWithType(NSSQLiteStoreType, configuration: nil, URL: url, options: options) ...
现在,并没有其他变化。当我学尝试构建,我得到以下错误:
CoreData: error: -addPersistentStoreWithType:SQLite ... Persistent store migration failed, missing mapping model
进一步回落,这一点:
Can't find or automatically infer mapping model for migration ... Source and destination attribute types are incompatible.
因此很明显,CoreData不能从整数16映射到自动变形?我该如何解决这个问题?
您还可以按顺序链接多个轻量级迁移,以执行更复杂的迁移,而无需通过重量级路径。在这种情况下,您可以执行Tom在第二部分中提出的建议,并创建使用整数值中的数据的第二个属性,并删除整数值属性。然后,您可以进行后续轻量级迁移,将valueBlob属性重命名为value。这对于这个特定的例子来说可能是过分的,但对于避免重量级迁移路径可能是有用的。 –