核心数据实体/属性迁移给出错误,“属性的值不可接受的值”

时间:2014-02-27 16:44:27

标签: ios core-data

我对核心数据迁移非常陌生。

我有一个名为“User”的Core Data实体,它包含一个名为“userId”的属性。目前,此属性的类型为Integer64,我现在需要将其更改为String。当我创建数据模型的新版本,并在我的应用程序中使用较新版本时,我可以使用新版本的数据模型,只要它是一个没有输入其他数据的空白应用程序。但是,当我在我的应用程序中输入新数据,然后尝试将应用程序迁移到新版本的数据模型时,我收到错误:

'NSInvalidArgumentException', reason: 'Unacceptable type of value for attribute: property = "userId"; desired type = NSString; given type = __NSCFNumber; value = 12345

我意识到只需从模拟器/设备中删除应用程序就可以解决这个问题,但是这样做,我将丢失我刚刚输入的数据,我不希望这样。我希望能够将应用程序迁移到新版本的数据模型,包括已经输入到应用程序中的现有数据。我怎么能这样做?

修改

以下是我为完成迁移所采取的步骤:

  1. 创建我的数据模型的新版本。
  2. 在新版本中,我将属性的类型从Integer64更改为String
  3. 我将文件检查器中的当前版本设置为我进行更改的数据模型的最新版本。
  4. 我更改了我的代码,将属性视为NSString而不是NSNumber //我也跳过了这一步,但结果仍然相同。
  5. 我再次运行我的应用程序,那就是我收到上面提到的错误。
  6. 旁注:当我输入这行代码时:

    NSLog(@"which version? %@", [[self managedObjectModel] versionIdentifiers]);
    

    我的输出是:

    which version? {(
        ""
    )}
    

    不确定我为什么会这样做。

0 个答案:

没有答案