我有,我刚刚添加的核心数据版本现有的iPad应用。我已经完成了文档并遵循了详细的步骤。现在,选择我的新模式作为当前版本的模型,并试图在Xcode我的开发设备上运行它后,我收到以下错误:核心数据迁移 - 表已经存在
2012-03-28 07:35:42.137 DocsOnTap[2603:707] CoreData: error: (1) I/O error for database at /var/mobile/Applications/06EECF01-3598-4513-8A3A-BE4FD49EEBF6/Documents/.DocsOnTap.sqlite.migrationdestination_41b5a6b5c6e848c462a8480cd24caef3. SQLite error code:1, 'table Z_2TAG already exists'
我对我的模型所做的唯一的变化是在一个单一的加新的实体。我在我的模型中有一个名为Tag的表 - 这似乎是错误所指的。
如果我恢复我目前的版本控制模式回到以前的模式版本,那么我可以从我的Xcode开发设备上运行没有错误我的应用程序。
我已阅读,有可能试图在开发设备上使用的核心数据迁移问题。不过,我只想测试这个过程,以确保当我们在Appstore中更新我们的应用程序时,迁移将按照我们客户的预期进行。
您需要与原始模型要测试迁移每次安装原有的应用程式。当您在dev中对新版本进行重大更改时,您必须删除并重新安装应用程序(除非您更新了dev版本)。 – Joe 2012-03-27 20:49:01
我不确定我是否理解你。我的原始模型在我的开发设备上有我的原始应用程序。我更改了现有的应用程序以添加核心数据版本控制,添加了新模型,使其成为当前模型,并将实体添加到新模型中。然后我尝试在dev设备上运行,并得到上述错误。 “版本变更”是什么意思? – daveywc 2012-03-27 20:57:09
我在说,如果你使用datamodel(例如版本2.0),然后添加一个表格。您首次在版本1数据模型上运行代码时,只要您添加了代码,它就会自动迁移。现在,如果您停止代码并对2.0数据模型进行更多更改,它将不会自动迁移,因为您只是修改了相同的模型,并且可能需要删除并重新运行应用程序。 – Joe 2012-03-28 02:38:28