NSInternalInconsistencyException uncatch 异常 'NSInternalInconsistencyException', 原因: '无法在bundle中加载 NI



我在我的iOS应用程序中有一个奇怪的错误。从昨天开始一切都工作得很好,今天我对一个与AppDelegate无关的视图控制器进行了一些改进,当我试图测试我在模拟器上所做的更改时,我得到了这个错误:

*由于未捕获异常'NSInternalInconsistencyException'而终止应用程序,原因:'Could not load NIB in .包:"NSBundle(加载)'与名称'xxx'

我在谷歌和这个网站上搜索了很多,试图找到一个解决方案,我发现的所有主题都是关于xib文件的问题。然而,我正在使用故事板,我的应用程序是iOS6.1,所以我没有xib文件…我还检查了故事板是否包含在"构建阶段"中,并且一切似乎都是正确的。我知道,当一些文件包含在Finder中而不是在Xcode中时,可能会发生这种错误,但这不是我的情况:我总是直接在Xcode中包含文件并勾选"将文件复制到目录"选项。我甚至试图恢复我所做的更改,我仍然有这个问题,所以我真的不知道发生了什么。我的应用程序在这个阶段真的很简单,我只是有几个视图控制器通过一个导航控制器和一个外部框架(AFNetworking)连接。我的AppDelegate(错误似乎发生的地方)是干净的:我没有添加任何东西到Xcode提供的样例代码。

我真的被这个问题难住了,希望你能想个办法帮我解决。

首先,尝试使用Xcode/Product/Clean菜单项。如果还不行,请转到"管理器",切换到"项目",然后删除项目的"派生"文件夹。如果你做了第二项,退出Xcode并重新开始,以确保所有内容都被清除。

编辑:如果你想的话,把它拉起来,然后发送到我个人资料里的电子邮件地址。我只能用几分钟,但至少要看一看。

EDIT2:在这里学到了一些东西,但没有修复。你看到的是StoryBoard试图生成rootViewController,但失败了——app委托甚至从未得到消息。EventsTVC类被发送initWithCoder:,然后稍后被请求它的nibName,它返回。这个nibName是故事板中的一个标识符,也是苹果内部必须用来构造nib的。然而,这是失败的。您可以通过将此添加到EventsTVC中来查看名称:

- (NSString *)nibName
{
    NSLog(@"NIB NAME %@", [super nibName]);
}

为了重现这个问题,我创建了一个新的StoryBoard Master/Detail应用,并将其添加到rootviewcontroller中:

- (NSString *)nibName
{
    NSLog(@"NIB NAME %@", [super nibName]);
    return [[super nibName] stringByAppendingString:@"foo"];
}

这当然会使nibName伪造,并导致应用程序在你的地方失败,并显示相同的消息。

你有两个选择:你可以刻录一个DTS事件-看看你是否能让苹果公司修复它(可能需要几天),或者你可以重做项目,并复制尽可能多的你可以回到新的应用程序。

无论如何,如果你能把同样的压缩文件发送给苹果,并在上面创建一个bug报告,那就太棒了。我怀疑故事板内部已经损坏了,但是没有公共方法可以用来深入研究它(看看UIStoryBoard)。

从ios7和Xcode 5开始,它每天早上都这样对我!我不知道他们在xcode中做了什么,但这很烦人。如果你想传递这个bug,去organizer,然后删除"派生数据"(如果它不想删除,在终端中使用rm -rf删除它),然后运行你的应用程序,它会再次崩溃,这次去你的模拟器,点击重置设置和所有东西。现在再次运行您的应用程序(完成)!

最新更新