【发布时间】:2014-04-18 14:28:20
【问题描述】:
处理一个存在大量问题和大量未使用/有缺陷的遗留代码的 xcode 项目 - 我们最近决定重新开始一个新项目并从那里开始构建。一切都好得多,但我遇到了核心数据迁移问题。
这个模型的绝大多数是相同的,只是做了一些调整——这个模型只包含 6 个对象,而且我真正关心的只有一个对象,我真正关心的是获取用户保存的内容,所以当我们发布这个并且他们升级该数据时有没有。我在新项目中基本上从头开始创建了新模型,所以我猜测应用程序正在尝试基于 ID 或不匹配的东西访问特定模型?
有人知道潜在的解决方案吗?
应用程序在以下断言处崩溃:
NSPersistentStore *persistentStore = [managedObjectStore addSQLitePersistentStoreAtPath:storePath fromSeedDatabaseAtPath:nil withConfiguration:nil options:options error:&error];
NSAssert(persistentStore, @"Failed to add persistent store with error: %@", error);
现有应用目前在其原始 ModelA 的第二个版本上,而新应用在第一个版本上只有一个全新的 ModelA。我猜这可能与它有关?
【问题讨论】:
-
该项目需要同时包含旧模型和新模型才能进行迁移。它检查现有版本的捆绑包并尝试创建映射模型(假设您正在使用轻量级迁移)。如果您不使用轻量级迁移,则需要一个映射模型。否则,它将不知道如何迁移您的内容。
-
有趣 - 我如何处理两个对象文件,如 foo.h 和 foo.m,它们具有相同的名称和模型之间可能不同的属性?
-
我应该更清楚一点:我所说的旧模型是指 .xcdatamodeld 文件中的模型。您必须将该文件添加到新项目中,然后在其中添加该数据模型的新版本。
-
好的,太好了!最好的方法是什么?我可以在 xcode 中单击并将 .xcdatamodel 从一个项目拖到另一个项目吗?
-
你在新项目中使用 RestKit 吗?
标签: ios xcode core-data migration restkit