2013-05-02 151 views
0

我对核心数据模型做了很多更改。过去我们使用简单的自动迁移。然而这次将会失败。由于我真的不关心被迁移的数据,我只想在自动迁移失败并且重新设置时删除持久性存储。这是一种有效的方式吗?任何我必须小心的事情?这可否让我的应用程序被拒绝?跳过核心数据迁移

回答

1

这样做有一些明确的问题,你需要小心。 This answer不得不从的NSManagedObjectContext文档

上下文总是有一个“父”持久存储协调其 提供了模型和调度请求包含数据的各种执着 商店一些好的建议。没有协调员,上下文不是完全有效的。上下文的协调器提供被管理的对象模型并处理持久性。从 外部存储中提取的所有对象都将在全局环境中注册,同时全局使用 标识符(NSManagedObjectID的一个实例),该标识符用于唯一标识每个对象到外部存储区。

当面对我们的应用程序之一,类似的情况,我选择做一个新的持久化存储,并弃用旧的,因为我们的老店已经由以往的不良迁移搞砸了我们的许多设备。它最终变得比我希望的更加混乱,但它确实奏效。

您的计划存在的问题并非不可逾越,我只是建议谨慎。我喜欢Giao使用NSManagedObjectContext重置的建议。在删除和重建时,持久性商店协调员可能会感到困惑。我担心,因为苹果似乎在幕后做了很多事情。我也担心,因为似乎核心数据在发布的应用程序上的行为与我们的调试版本不同,特别是在升级过程中。

我认为你很聪明,认识到你的汽车将有麻烦,并且你正在寻找另一条路。在最近的一段时间里,我看到一个组织真的必须争取一个月来处理他们的应用中数据迁移失败的问题。

+0

您能详细说明我的方法有哪些类型的问题? – kukudas 2013-05-02 05:57:29

+0

编辑我的回复以上 – HalR 2013-05-02 06:10:43

+1

@HalR:您链接到的问题/答案是关于清空已打开的持久存储。我觉得这里的情况要简单得多:如果'addPersistentStoreWithType'由于迁移问题而失败,则可以删除存储文件并再次调用'addPersistentStoreWithType'。 – 2013-05-02 10:58:41