3

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

*由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“无法在包中加载 NIB:“NSBundle(已加载)”,名称为“xxx”

我在谷歌和这个网站上搜索了很多试图找到解决方案,我发现的所有主题都是关于 xib 文件的问题。但是,我使用的是 Storyboard,而我的应用程序只有 iOS6.1,所以我没有 xib 文件……我还检查了 Storyboard 是否包含在“Build Phases”中,并且一切似乎都正确:s。我知道当某些文件包含在 Finder 中但未包含在 Xcode 中时可能会发生此错误,但对我而言并非如此:我总是将文件直接包含在 Xcode 中并选中“将文件复制到目录”选项。我什至试图恢复我所做的更改,但我仍然有这个问题,所以我真的不知道发生了什么。在这个阶段我的应用程序非常简单,我只有几个通过导航控制器和 1 个外部框架(AFNetworking)连接的视图控制器。

我真的被这个问题困住了,我希望你能找到一种方法来帮助我解决它。

4

2 回答 2

1

从 ios7 和 Xcode 5 开始,它每天早上都对我这样做!我不知道他们在 xcode 中做了什么乱七八糟的事情,但这很烦人。如果您想通过此错误,请转到管理器,然后删除“派生数据”(如果它不想删除,请使用旧的 rm -rf 在终端中删除它),然后运行您的应用程序,它将再次崩溃,这次去你的模拟器并点击重置设置和一切。现在再次运行您的应用程序,您就完成了:)!

于 2013-11-13T09:34:14.687 回答
1

首先,尝试使用 Xcode/Product/Clean 菜单项。如果不这样做,则转到 Organizer,切换到 Projects,然后删除项目的 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 修复它(可能需要几天时间),或者你可以重做项目,并将尽可能多的内容复制回新应用。

无论如何,如果您可以将相同的 zip 文件发送给 Apple 并创建一个错误报告,那将是非常棒的。我怀疑情节提要在内部已损坏,但没有可用于深入研究的公共方法(查看 UIStoryBoard)。

于 2013-06-03T19:39:22.880 回答