Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/96.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Coredata推断映射模型在我的旧数据库上失败_Ios_Core Data - Fatal编程技术网

Ios Coredata推断映射模型在我的旧数据库上失败

Ios Coredata推断映射模型在我的旧数据库上失败,ios,core-data,Ios,Core Data,我正在为我的一个数据库使用CoreData,升级我的应用程序时遇到问题 我的旧数据库不再加载。。。我得到了错误“Cocoa error 134190”,我认为这意味着推断的映射模型失败了 当我开始编辑这个版本的应用程序时,我创建了一个新的模型版本,我只需向一个实体添加一个新属性,向另一个实体添加两个新属性。未更改或删除任何内容 我已经检查了我的应用程序目录,所有的模型版本都在那里 我甚至有我以前版本的应用程序的快照,通过该快照,我可以加载我的核心数据文件 为了调试出了什么问题,我从以前的快照中获

我正在为我的一个数据库使用CoreData,升级我的应用程序时遇到问题

我的旧数据库不再加载。。。我得到了错误“Cocoa error 134190”,我认为这意味着推断的映射模型失败了

当我开始编辑这个版本的应用程序时,我创建了一个新的模型版本,我只需向一个实体添加一个新属性,向另一个实体添加两个新属性。未更改或删除任何内容

我已经检查了我的应用程序目录,所有的模型版本都在那里

我甚至有我以前版本的应用程序的快照,通过该快照,我可以加载我的核心数据文件

为了调试出了什么问题,我从以前的快照中获取了精确的数据模型,并在当前版本中使用了它,但仍然得到了错误

我甚至对我的“.app”目录包中的每个文件都做了一个“diff”,两个文件之间只有两个不同。一个是应用程序的实际二进制文件,另一个是“Info.plist”文件。我查看了Info.plist文件,它们也基本相同(新的包有更新的版本,但没有其他更改)

知道为什么推断的映射被破坏了吗

即使数据模型与上一个版本完全相同,我也会遇到同样的错误

这是非常令人沮丧的


任何关于未来如何追踪此类问题的信息也将不胜感激

我找到了答案。。。问题是,在我的新版本中,我重新排列了文件的位置。我只是简单地将数据库移动到一个新的位置。我没有意识到的是,coredata数据库内置了一些关于其路径的知识,您不能简单地移动它们

我需要使用NSPersistentStoreCoordinator的方法更改数据库的位置:

migratePersistentStore:toURL:options:withType:错误:

我的错,但我真的希望核心数据错误消息不要那么神秘

在我的应用程序的下一个版本中,我将完全删除核心数据


Ron

我认为核心数据实际上并不关心数据库文件在哪里,但我可能错了。在我看到这个错误的时候,特别是在试图推断模型映射时出现的“Cocoa错误134190”,在尝试迁移到模型的下一个版本时实际上出现了问题

例如,当我今天发现这个线程是因为我正在帮助某人解决这个问题时,真正的根本问题是其中一个属性的类型被意外更改。自动迁移无法处理此类更改

查看两个模型版本之间的更改的一种比较简单的方法是在命令行上使用diff:

diff yourNameHere.xcdatamodeld/yourNameHere5.xcdatamodel/contents yourNameHere.xcdatamodeld/yourNameHere4.xcdatamodel/contents 
(假设您有一个名为“yourNameHere”的核心数据模型描述,并且您正在考虑从版本4迁移到版本5时出现的问题。您必须针对特定的文件进行调整。)在这个差异中,您应该看到您添加的任何其他内容,但您实际上是在寻找一种类型在不应该更改时发生更改的情况