【发布时间】: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