【问题标题】:Coredata Lightweight Migration FailsCoredata 轻量级迁移失败
【发布时间】:2018-02-18 12:42:14
【问题描述】:

如果我添加新模型版本,然后将属性添加到实体,我会遇到迁移失败。属性的类型是什么、它是可选的还是具有默认值都无关紧要。如果我只是添加新模型版本但不添加属性,它可以正常工作。在过去的 3 年里,我做了很多次这样的事情,没有任何问题。 NSMigratePersistentStoresAutomaticallyOption 和 NSInferMappingModelAutomaticallyOption 都设置为 true。我得到的错误如下所示。

2018-02-18 12:28:51.771608+0000 Writing Shed[4105:1886727] [error] 错误:非法尝试保存到从未打开的文件。 “此 NSPersistentStoreCoordinator 没有持久存储(架构不匹配或迁移失败)。它无法执行保存操作。”。上次记录的错误 = 错误域 = NSCocoaErrorDomain 代码 = 134140 “持久存储迁移失败,缺少映射模型。”

有谁知道可能出了什么问题?

【问题讨论】:

  • 即使重命名/删除属性也失败了!
  • 您是否正确地将新属性添加到最新版本,并在项目中同时包含以前的版本和新的版本? Xcode 的行为并不总是很直观,您需要在添加新版本时仔细检查。
  • 谢谢。是的,我已经正确添加了属性(该模型有几十个实体并且在 v26 上)。版本都在项目文件中。就像我说的,我已经做过很多次了,并且知道其中的陷阱。
  • 很明显你在某些时候做错了什么,这么简单的迁移应该没有问题,但遗憾的是 Xcode 很容易陷入相当多的陷阱。您可能想查看stackoverflow.com/questions/20983542/…stackoverflow.com/questions/2492103/… 来尝试一下。

标签: ios xcode9 core-data-migration


【解决方案1】:

我发现了问题。我正在 Mac OS 上开发一个已经在 IOS 上可用的应用程序。他们通过 iCloud 同步 CoreData。在 Mac 上工作的某个时候,我向模型添加了一些非可选或默认的属性。长话短说,这导致了在更改之前的 IOS 商店出现问题,因此迁移失败(无法迁移到非可选/非默认属性)。我仍然不确定我是如何陷入这种情况的,因为我通常对 CoreData 非常小心,但是会发生一些事情。感谢 cmets 让我看得更深。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-24
    • 1970-01-01
    • 2021-06-20
    • 1970-01-01
    • 1970-01-01
    • 2011-05-17
    • 1970-01-01
    相关资源
    最近更新 更多