1

我正在更新应用程序,这个版本完全是从头开始构建的,并且具有全新的coreData模型架构。我需要coreData从旧模型编写迁移。我一直在寻找编写coreData迁移的资源,但它们都需要旧模型文件。由于这个版本是全新的,我没有旧的模型模式。

有什么方法可以编写迁移,以便在用户更新应用程序时转储旧模型?

提前致谢

4

3 回答 3

3

如果您有旧 App,则可以从 App 包中包含的已编译模型文件重新创建模型:

  • 如有必要,将应用程序同步到 iTunes。
  • Ctrl-单击 iTunes 中的应用程序,然后使用“在 Finder 中显示”找到“YourApp.ipa”文件。
  • 将“YourApp.ipa”复制到一个临时目录,然后在命令行中使用“unzip YourApp.ipa”来解压存档。
  • 在提取的“Payload/YourApp.app”文件夹中应该有一个“XXX.momd”文件夹,其中包含一个文件“XXX.mom”(XXX是模型的名称)。这是编译好的模型文件。
  • 在您的 Xcode 项目(或临时项目)中,创建一个新的“数据模型”文件“XXX.xcdatamodeld”。
  • 选择此文件并从菜单中选择“编辑器 -> 导入 ...”。
  • 在导入对话框中,从上方选择“XXX.mom”文件。
于 2012-11-09T14:45:29.700 回答
0

如果没有旧模型架构,您将无法进行迁移。嗯,这有点合乎逻辑。

您唯一可以感知的选择是对旧模型模式进行逆向工程并从那里获取它。

然后通过添加/删除/更改实体、属性和关系来构建新模式。

如果您可以从现有存储中提取数据,只需编写自定义导出函数并将其插入到您全新的核心数据存储中。

于 2012-11-09T13:09:31.967 回答
0

您可以通过使用纯 sqlite SELECTs 读取旧数据库并通过 coredata 模型将数据插入新数据库来进行迁移。我在我的软件中做了这个来从并发软件中导入数据:)

于 2012-11-09T22:42:04.127 回答