0

我正在维护一个已经在 AppStore 上运行了几个月的应用程序。我的应用程序使用 Core Data,但不知何故,我设法丢失了所有以前版本的 xcdatamodel。

我希望执行轻量级迁移。我需要做的就是为我的一个实体添加一个属性。因此,我遵循了创建模型版本的正确步骤。

显然,我修改了原来的 xcdatamodel。因此,当我测试迁移时,它失败并显示错误代码 = 134130“找不到源存储模型”。由于在设备/模拟器上没有 sqlite 文件时应用程序运行良好,因此我得出的结论是原始 xcdatamodel 已修改

假设到目前为止我的逻辑成立,我如何创建一个 xcdatamodel 来匹配我用户设备上的 sqlite 文件。他们不能接受丢失数据。

谢谢你。

4

2 回答 2

2

根据 Apple 的 Core Data版本控制指南,以下两个版本的 Core Data 被视为相同:

  • 对于每个实体,以下属性必须相同:名称、父级、isAbstract 和属性。不比较 className、userInfo 和验证谓词。

  • 对于每个实体中的每个属性,以下属性必须相等:name、isOptional、isTransient、isReadOnly,对于属性 attributeType,以及对于关系 destinationEntity、minCount、maxCount、deleteRule 和 inverseRelationship。

如果您当前的 xcdatamodel 是一个全新的文件,我认为您所做的任何事情都不会使原始版本和当前版本匹配。但是,如果当前版本只是不小心修改的原始版本,您可以查看旧生成的模型文件并尝试找出更改的内容。

例如:在模型上,您有一个“NSString *age”属性,但在您当前的 xcdatamodel 上,该属性是“NSNumber *age”。

另外,请记住,您看到的错误可能是由生成的模型文件与数据库不同步引起的,因此请尝试重新创建它们。

于 2012-09-25T13:01:04.627 回答
0

打开 Core Data 模型文件(例如一个空白文件),选择Editor -> Import,然后.mom从您的应用程序的先前版本中找到该文件。

看到这个答案

于 2012-09-25T08:24:18.083 回答