我有一个应用程序已经在iPhone模拟器上运行了一段时间。最近,我决定在另一个项目中重新使用数据模型和相关类 - 所以我将它们从这个项目窗口拖到另一个项目窗口,然后告诉Xcode不要复制,只是为了引用。起初这不起作用,所以我跳过了一些箍试图解决它(我可能会在另一篇文章中询问更多相关内容)。毕竟,我重新编译并试图运行原始应用程序 - 它不再工作了。经过进一步的调查,我发现当我重新编译原始应用程序时,我最终得到一个包含.momd包的包,但它只包含一个Versioninfo.plist文件 - 没有.mom文件,没有像我这样的.omo文件我希望看到。我不记得对原始应用程序进行任何更改。我没有得到任何警告。我只是得到一个不完整的.momd包(并且,毫不奇怪,我的应用程序现在崩溃了。)
这里发生了什么?
顺便说一下,应用程序现在崩溃了这条消息: 由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:' * - [__ NSArrayM insertObject:atIndex:]:object不能为nil'执行这行代码时得到的结果:
self.productRegistry = [[UIManagedDocument alloc] initWithFileURL:self.productRegistryURL];
答案 0 :(得分:3)
我通过使用Finder更仔细地查看项目目录中的文件位置来解决这个问题。在Xcode窗口中,一切看起来都很正常,但在实际项目目录中,我发现.datamodeld包最终位于项目目录的顶层 - 与项目包本身处于同一级别。 Xcode显然不喜欢这个,但不幸的是它并没有抱怨 - 它只是创建了一个部分构建输出。一旦我将.datamodeld包移动到与项目代码的其余部分相同的文件夹中,一切都运行正常。
这似乎只是一个怪癖。我希望Xcode能够看到一切都很好并且构建正确或者它会看到事情并不像应该的那样并且失败。在这种情况下,它没有正确构建,但对此保持沉默。
希望有一天这个答案可以帮助别人。