2011-05-13 74 views
0

在我的可可应用程序中使用核心数据框架时,我创建了一些实体并使用NSEntityDescription创建了引用。当我运行应用程序时出现错误,指出“用于打开持久存储的托管对象模型版本与用于创建持久存储的版本不兼容。”使用核心数据的问题

回答

2

您需要从设备/模拟器中删除应用程序,然后重新构建并运行。

每次更改模型时都会发生这种情况,因为旧数据存储将保留在应用程序文档文件夹中,而访问它的类已被更改。

在开发的后期阶段,您会希望引入商店迁移,您的测试人员和用户在每次发布新版本时都不必删除他们的数据。如果您的模型保持静态,则在将来的更新中不需要迁移数据。

您可能需要查看Core Data Migration Programming Guide了解更多信息。

0

您必须从删除持久性存储文件:(根据您的Xcode版本)

  • ~/Library/$AppName
  • ~/Library/Application Support/$AppName

0

答案是有点棘手但这总是对我有用。这是一个干净安装一个新的兼容.sqlite文件,不是迁移

启动模拟器,删除应用程序和数据(删除应用程序后弹出)。

退出模拟器

打开X-代码,进行任何编辑您的数据模型后

删除{*appname*}.sqlite文件(或备份它,从项目文件夹中删除,并删除参考)

清洁应用(Product > Clean

在模拟器中运行应用程序(本教程中我将承担4.2)

当模拟器运行时,在Finder窗口,导航到: {*home*} > Library > Application Support > iPhone Simulator > 4.2 > Applications > {*random identifier*} > Documents > {*appname*}.sqlite

复制这个文件到另一个位置

停止运行在您的应用程序X-代码

拖放{ appname} .sqlite文件放入X代码中的文件列表中。

在弹出的对话框中,确保选中copy to folder复选框。

Product > Clean

然后在模拟器上再次运行应用程序

现在你应该有一个工作sqlite的文件!

干杯, 罗伯特