【发布时间】:2012-04-11 10:50:13
【问题描述】:
我有一个现有的 iPad 应用程序,我刚刚添加了核心数据版本控制。我已经阅读了文档并遵循了详细的步骤。现在,在选择我的新模型作为当前版本化模型并尝试从 xCode 在我的开发设备上运行它之后,我收到以下错误:
2012-03-28 07:35:42.137 DocsOnTap[2603:707] CoreData:错误:(1) /var/mobile/Applications/06EECF01-3598-4513-8A3A-BE4FD49EEBF6/ 处的数据库 I/O 错误文档/.DocsOnTap.sqlite.migrationdestination_41b5a6b5c6e848c462a8480cd24caef3。 SQLite 错误代码:1,'表 Z_2TAG 已存在'
我对模型所做的唯一更改是添加了一个新实体。我的模型中有一个名为 Tag 的表 - 这似乎是错误所指的内容。
如果我将当前版本的模型恢复到以前的模型版本,那么我可以从 Xcode 在我的开发设备上运行我的应用程序而不会出错。
我了解到,尝试在开发设备上使用核心数据迁移可能会出现问题。不过,我只是想测试该过程,以确保当我们在 Appstore 中更新我们的应用时,迁移按预期为我们的客户工作。
【问题讨论】:
-
每次要测试迁移时,您都需要使用原始模型安装原始应用程序。当您在 dev 中对新版本进行重大更改时,您必须删除并重新安装应用程序(除非您对 dev 版本进行更改)。
-
我不确定我是否理解你。我的开发设备上有原始模型的原始应用程序。我更改了现有应用程序以添加核心数据版本控制,添加新模型,使其成为当前模型,向新模型添加实体。然后我尝试在开发设备上运行并得到上面的错误。 “版本开发更改”是什么意思?
-
我是说如果你对数据模型进行版本化(例如 2.0 版),然后添加一个表。第一次在版本 1 数据模型上运行代码时,只要您添加了代码,它就会自动迁移。现在,如果您停止代码并对 2.0 数据模型进行更多更改,它将不会自动迁移,因为您刚刚修改了相同的模型,并且可能需要删除并重新运行您的应用程序。