核心数据迁移 - 表已经存在

dav*_*ywc 5 migration core-data ios

我有一个现有的iPad应用程序,我刚刚添加了核心数据版本.我已经阅读了文档,并按照详细步骤进行操作.现在选择我的新模型作为当前版本化模型并尝试从xCode在我的开发设备上运行它后,我收到以下错误:

2012-03-28 07:35:42.137 DocsOnTap [2603:707] CoreData:错误:(1)/ var/mobile/Applications/06EECF01-3598-4513-8A3A-BE4FD49EEBF6/Documents /中数据库的I/O错误. DocsOnTap.sqlite.migrationdestination_41b5a6b5c6e848c462a8480cd24caef3.SQLite错误代码:1,'表Z_2TAG已存在'

我对模型进行的唯一更改是添加一个新实体.我的模型中有一个名为Tag的表 - 这似乎是错误所指的内容.

如果我将当前版本化的模型恢复为之前的模型版本,那么我可以在Xcode上的开发设备上运行我的应用程序而不会出现错误.

我已经读过在尝试在开发设备上使用核心数据迁移时可能会遇到问题.但是,我只是想测试这个过程,以确保当我们在Appstore中更新我们的应用程序时,迁移按照预期为我们的客户工作.

小智 12

在我的情况下,由于重命名ID而出现相同的错误,该错误是在实体的数据模型检查器中设置的.删除重命名ID后,问题就消失了.

  • 我做了同样的事情,虽然错误地插入重命名Id我设置实体的重命名Id而不是属性. (4认同)

dav*_*ywc 5

嗯,这是一个不起眼的错误。我添加的实体名为 AppKeys - 这必须是核心数据或 SQL Lite 内部使用的实体的名称。我重新开始,发现我可以毫无问题地添加和迁移其他属性和实体。但是,如果我再次尝试添加名为 AppKeys 的实体,则会出现相同的错误,提示“表 Z_2TAG 已存在”。所以我的问题的解决方案是选择另一个实体名称。遗憾的是,这没有在明显的地方记录 - 或者错误没有帮助。无论如何,希望有一天这可能会帮助其他人。