2012-03-02 84 views
0

直到昨天为止,我的iPhone上有一个完美的应用程序。我昨天做了一些调整,现在应用程序在我的模拟器上工作,但不在iPhone上。我收到的错误消息是在“applicationDidFinishLaunching”完成之后。“无法在iPhone上加载NIB捆绑”错误,但不是在模拟器上

错误是: 'NSInternalInconsistencyException',原因: '无法在捆装载NIB: '一个NSBundle ....>(加载)' 名为 'RootViewController的''”

奇怪的是,我没有任何叫做RootViewController的xib文件,我在一个月前将它改名为CategoryViewController,并且直到昨天才正常工作,我在每个viewControllers中验证没有提及“RootViewController”。我用“CTRL + shift + F”“RootViewController”进行搜索,在我的项目中没有提到这个文件。

我在做的调整与目标info.plist有关,我只添加了应用程序支持iTunes文件共享选项。这是我的info.plist万一我搞砸的东西了:

info.plist

我也有首次运行“清洁”昨天。

我验证了我的MainWindow.xib文件具有它应该具有的所有连接,并将其与我用作基准的原始示例项目进行比较。

我试图恢复项目回到早期的快照,当我积极的工作,现在甚至不工作。看来我的iPhone捆绑销毁了。但即使在我从iPhone上删除应用程序并重试后,它也会执行相同的操作。

我该如何去调试呢?我花了10个小时已经试图解决这个问题,真的需要一些帮助。

+0

视图插座是否连接? – CodaFi 2012-03-02 04:52:14

+0

ya一旦清除bild并检查 – 2012-03-02 04:58:49

+0

是的,我的主视图控制器称为CategoryViewController已连接。自昨天上次工作以来,没有对连接进行任何更改。为什么它会在模拟器上运行,而不是在iPhone上运行?看起来像捆绑问题或他们建立设置... – jroyce 2012-03-02 05:01:44

回答

0

这是通过重构和重命名我的第一个viewController回到RootViewController解决的。故事的寓意是不要改变RootViewController的名字。内置的引用不容易改变。没有必要使用不同的名称。一旦我做到了这一点,一切都再次奏效。

0

Xcode模板创建Info.plist文件,该文件指定主要的nib文件。

- 默认的笔尖名称是“MainWindow”。
- 该nib文件的默认版本包含一个导航控制器,该控制器引用名为“RootViewController”的视图。

但是,每个人都可以有iPhone或iPad的变化。这些文件有〜iphone或〜ipad添加到最后。他们的系统将通过后缀自动选择变化。

您可能因为尝试加载RootViewController的原因而获得不同的nib文件。另外,如果你的引用RootViewController的nib中有一个视图或视图控制器,操作系统会尝试加载它。 (一旦它被打开,它实例化几乎所有的nib文件。)

+0

谢谢。可能发生的一件事是我今天第一次打开MainWindow.xib文件。我从来没有看过它。那之后我的问题就开始了。我在想它实例化了一些东西,现在我需要撤消它。我在原始文章中发布了一个屏幕截图,以便您了解我的连接。其中有一个未连接的rootViewController。这可能会导致一些问题吗? – jroyce 2012-03-02 07:00:54

+0

我非常想找到解决方案。我甚至尝试恢复到早期版本,但仍然无效。 WTF! – jroyce 2012-03-02 18:47:35

+0

有没有办法绕过这个?我想以编程方式设置将被加载的内容,以避免发生这种情况的可能性。 – jroyce 2012-03-02 19:15:22

相关问题