我对核心数据模型做了很多更改。过去我们使用简单的自动迁移。但是这次会失败。由于我真的不关心要迁移的数据,我只想删除持久存储,如果自动迁移失败并再次设置它。这是一种有效的方法吗?我有什么要小心的吗?这会让我的应用被拒绝吗?
答案 0 :(得分:1)
这样做有一些明确的问题,你需要小心。 This answer从NSManagedObjectContext的文档中获得了一些很好的建议
上下文始终具有“父”持久性存储协调器 提供模型并向各种持久性调度请求 包含数据的商店。没有协调员,上下文就不是 功能齐全。上下文的协调器提供托管 对象模型和处理持久性。从一个提取的所有对象 外部商店与全球商店一起在上下文中注册 用于唯一的标识符(NSManagedObjectID的实例) 将每个对象标识到外部存储区。
当我们在其中一个应用程序中遇到类似的情况时,我选择创建一个新的持久存储,并弃用旧的存储,因为我们的旧存储在以前的错误迁移中被许多设备搞砸了。它最终变得比我希望的更加混乱,但确实有效。
您计划的问题并非不可克服,我只是建议谨慎。我喜欢Giao关于使用NSManagedObjectContext重置的建议。删除和重建时,持久性存储协调器可能会感到困惑。我担心因为Apple似乎在幕后做了很多事情。我也担心,因为核心数据在发布的应用程序上的行为似乎与我们的调试版本不同,特别是在升级过程中。
我认为你很聪明地认识到你的自动驾驶会遇到麻烦,并且你正在寻找另一条道路。在最近的过去,我看到一个团队真的不得不争抢一个月来处理他们的应用程序中失败的数据迁移。