我的iOS应用中出现了一个奇怪的错误。从昨天开始,一切都运行良好,今天我对一个与AppDelegate无关的视图控制器做了一些改进,当我试图测试我在模拟器上做的更改时,我收到了这个错误:
* 由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'无法加载NIB 捆绑:'NSBundle (已加载)'名称为'xxx'
我在谷歌和这个网站上搜索了很多,试图找到一个解决方案,我发现的所有主题都在讨论xib文件的问题。但是,我正在使用Storyboards,我的应用程序只有iOS6.1,因此我没有xib文件...我还检查了故事板是否包含在“构建阶段”中,一切似乎都正确:s。我知道当一些文件包含在Finder中而不是Xcode中时可能会发生这种错误,但对我来说并非如此:我总是将文件直接包含在Xcode中并检查“将文件复制到目录”选项。我甚至试图恢复我所做的改变,我仍然有这个问题所以我真的不知道发生了什么。我的应用程序在这个阶段非常简单,我只有几个视图控制器通过导航控制器和1个外部框架(AFNetworking)连接。我的AppDelegate(错误似乎发生的地方)很干净:我没有在Xcode提供的示例代码中添加任何内容。
我真的很困惑这个问题,我希望你能找到一种方法帮助我解决它。
答案 0 :(得分:1)
首先,尝试使用Xcode / Product / Clean菜单项。如果没有这样做,请转到管理器,切换到项目,然后删除项目的Derived文件夹。如果你做第二个,退出Xcode并重新开始只是为了确保全部擦除。
编辑:如果你愿意,可以将邮件压缩,然后将其发送到我个人资料中的电子邮件地址。我只能花几分钟时间,但至少会看看。
EDIT2:在这里学到了一些东西,但没有修复。你看到的是,StoryBoard正在尝试生成rootViewController,并且失败了 - 应用委托甚至从未收到消息。 EventsTVC类被发送initWithCoder:
,然后被要求提供它返回的nibName。这个nibName是故事板中的标识符 - 也是Apple内部必须用来构建一个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事件 - 看看您是否可以让Apple修复它(可能需要几天时间),或者您可以重做项目,并尽可能多地复制回到新的App。
在任何情况下,如果您可以将相同的zip文件发送给Apple并在其上创建错误报告,那将会非常棒。我怀疑故事板在内部是腐败的,但是没有公开的方法可以用来钻研它(看看UIStoryBoard)。
答案 1 :(得分:1)
自ios7和Xcode 5以来,它每天早上都会这样做!我不知道他们在xcode中做了什么样的混乱,但这很烦人。如果你想传递这个bug,请转到组织者,然后删除“派生数据”(如果它不想删除,请在终端中用一个好的旧rm -rf删除它),然后运行你的app,它将再次崩溃,这次去你的模拟器,然后点击重置设置和一切。现在再次运行你的应用程序:)!