我对核心数据迁移非常陌生。
我有一个名为“User”的Core Data实体,它包含一个名为“userId”的属性。目前,此属性的类型为Integer64,我现在需要将其更改为String。当我创建数据模型的新版本,并在我的应用程序中使用较新版本时,我可以使用新版本的数据模型,只要它是一个没有输入其他数据的空白应用程序。但是,当我在我的应用程序中输入新数据,然后尝试将应用程序迁移到新版本的数据模型时,我收到错误:
'NSInvalidArgumentException', reason: 'Unacceptable type of value for attribute: property = "userId"; desired type = NSString; given type = __NSCFNumber; value = 12345
我意识到只需从模拟器/设备中删除应用程序就可以解决这个问题,但是这样做,我将丢失我刚刚输入的数据,我不希望这样。我希望能够将应用程序迁移到新版本的数据模型,包括已经输入到应用程序中的现有数据。我怎么能这样做?
以下是我为完成迁移所采取的步骤:
旁注:当我输入这行代码时:
NSLog(@"which version? %@", [[self managedObjectModel] versionIdentifiers]);
我的输出是:
which version? {(
""
)}
不确定我为什么会这样做。