好的,所以我更改了 xcdatamodel 以在所有 3 个新“表”上包含一个新属性,默认值为 1。我对 Core Data 相当陌生,但非常习惯于 SQL 和 SQLite 数据库。我清理了 iphone 模拟器,使用 addPersistentStoreWithType:NSSQLiteStoreType 的“特殊”选项进行构建,该选项进行了轻量级迁移并立即生效。我可以更改我的谓词以包含这个新属性,这很好。
我应该注意,我有一个现有的 .sqlite 文件,该文件是项目的资源,在编译/运行时会被复制到应用程序中。这个 sqlite 文件在 iphone 模拟器上永远不会改变。
我现在需要获取我现有的数据行并将其中一些值更改为 2 或 3 用于排序和显示目的。我希望轻量级迁移会给我一个新的 sqlite 文件,我可以将它复制回一个不错的位置,然后使用 Navicat 更改这些值并覆盖 xcode 资源中的 sqlite 文件并删除特殊选项位并保持良好状态. 但是我没有得到一个新的 sql 文件,而是做了一些其他的“魔法”。
因为它看起来像 Core Data 只是接受属性并向它们添加 Z 我尝试添加 ZATTRIBUTENAME 列并使用我的新 xcdatamodel 文件但我收到错误“用于打开商店的模型与用于创建商店的模型不兼容” .
我不在乎苹果说不要用 SQL 编辑器编辑这些文件,因为它可能会把事情搞砸。所以请不要告诉我你的“不应该那样做”。不难看出核心数据方案和 sql 中发生了什么。问题是我无法使用新属性来编辑新的 sqlite 文件。
简而言之,我想我只是想弄清楚如何获取由新 xcdatamodel 生成的新 sqlite 文件,然后我可以复制和编辑该文件。我已经研究了几天,运气不好。
非常感谢您提前提供的帮助。