在分支之间切换时的核心数据问题(NSInternalConsistencyException)

时间:2016-12-21 19:41:58

标签: xcode git core-data version-control

我在gcode 8.1中使用git并在Objective-C中使用几个分支上的Core Data,每个分支都继承自创建MyProject.xcdatamodeld的公共主分支。

运行测试时我收到的错误是caught "NSInternalConsistencyException", "+entityForName: could not locate an entity named 'MyManagedObject' in this model.",这在调用-[NSEntityDescription insertNewObjectForEntityForName:inManagedObjectContext:]时出现,而MyManagedObject是NSManagedObject的简单子类。

在分支之间切换后出现此错误,尽管看起来不一致,因为有时我的测试运行没有错误。我确保了我的managed object context is not nil并尝试清理我的项目,清理我的构建文件夹以及删除Derived Data文件夹,但没有成功。我记得在构建之间从模拟器中删除了应用程序(因为每个分支使用不同的Core Data模型),并且我已经检查了所有拼写并且没有发现任何拼写错误。

请让我知道我可以提供哪些其他信息来帮助调试!

1 个答案:

答案 0 :(得分:0)

所以这是我奇怪的解决方案:

  • 清洁(Shift-Cmd-K)和清洁构建文件夹...(Alt-Shift-Cmd-K)。
  • .xcdatamodeld添加到Compile Phases。
  • 构建测试(Shift-Cmd-U)。 - n.b.构建将失败
  • 从编译阶段删除.xcdatamodeld
  • 从模拟器中删除应用。 - 如果核心数据架构已更改

我不知道为什么会这样,特别是因为.xcodeproj/project.pbxproj文件似乎没有任何变化。