在没有打开版本的情况下更改了核心数据模型

时间:2014-03-29 15:36:17

标签: ios objective-c core-data database-migration core-data-migration

我稍微改变了我的核心数据模型(将一些属性设置为optionalnon-optional)。

不幸的是我没有开启自动版本控制......

我昨天已将我的应用程序上传到App Store,Apple仍在审核中。 我担心它会破坏我的应用程序的现有安装。

这就是为什么我要取消当前上传的二进制文件并将我的核心数据模型重置为之前的属性设置,然后再次上传应用程序。

这引出了以下问题:

  • 如何确定当前数据模型是否与之兼容 现有的?这是纯粹基于属性的比较 或者通过比较Core的内容文件中的systemVersion 数据模型?
  • 如何解决我的问题,避免使用我的应用程序的新版本 由于数据模型不兼容而导致崩溃

1 个答案:

答案 0 :(得分:1)

兼容版本由匹配的版本号确定。

完全按照你的建议解决问题。拉动二进制文件,还原更改,修改模型版本,重新创建更改,确保启用自动迁移并测试它是否正常工作。

通过生成组件的32字节散列摘要来创建版本号,这些散列摘要被比较为相等:

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

  •   
  • 对于每个实体中的每个媒体资源,以下属性必须相同:名称 isOptional isTransient isReadOnly ,属性 attributeType ,关系 destinationEntity minCount maxCount deleteRule inverseRelationship 。    userInfo 验证谓词不会进行比较。

  •   

Apple ref

从技术上讲,如果您不更改任何不影响版本号的内容,则无需对模型进行版本控制。请注意,您的更改将影响版本号,因此您需要采取措施。