无法在包中加载 NIB:NSBundle

Posted

技术标签:

【中文标题】无法在包中加载 NIB:NSBundle【英文标题】:Could not load NIB in bundle :NSBundle 【发布时间】:2015-04-15 13:09:04 【问题描述】:

我正在尝试从 MainViewController 加载一个 nib 文件,但我得到了一个我在下面提到的异常。我没有经常得到这个例外(五十次中的一次)。检查下面的异常

例外:

 Could not load NIB in bundle: 'NSBundle </private/var/mobile/Containers/Bundle/Application/38ABE26C-F87E-49F1-9F29-E46E7ACDBD54/E2_ios_App.app> (loaded)' with name 'NetWorkError'

我用来呈现这个 nib 文件的代码是

NetWorkError *error=[[NetWorkError alloc]initWithNibName:@"NetWorkError" bundle:nil];
                    error.errorMessage=[details serverDownMessage];   // passing some message before presenting .
                    [self presentViewController:error animated:YES completion:nil];

我使用的是运行 iOS 7 的 iPad。

有类似问题的人被要求检查 nib 名称,检查 .xib 是否已添加到目标,检查 .xib 是否已添加到复制包资源。但每件事对我来说都是正确的。还有什么问题??

【问题讨论】:

view 属性是否已正确连接到 IB 中的视图? 我可以加载 .xib 49 50 次 不相关,但你应该认真考虑重命名你的类以反映它们是什么,NetWorkError 是一个实际错误的好名字,NetworkErrorViewController 是一个显示网络错误的 viewController 的好名字。 Error 是 NSError 的通用名称。此外,如果 serverDownMessage 是一个属性,请使用点语法,而不是方法语法。糟糕的命名约定有时会导致问题本身,因此保持良好习惯是件好事。 由于 NetWorkError 是一个 UIViewController,你可以尝试从 storyboard 中加载它,看看你是否有类似的问题?您可能没有正确设置文件所有者等(在这种情况下,您可能只想重新创建它)。 【参考方案1】:

你试过NSStringFromClass([NetWorkError class])吗?

您也可以尝试再次排除并添加文件到您的项目/清理项目/从模拟器中删除应用程序。

【讨论】:

它实际上是在 device 中运行。我尝试了所有这些东西。这会是一些与内存相关的问题吗?? 嗯,奇怪的事情..从设备中删除并重命名文件也没有影响?也有人提到这可能是国际化link

以上是关于无法在包中加载 NIB:NSBundle的主要内容,如果未能解决你的问题,请参考以下文章

无法在包中加载 NIB:NSBundle

NSInternalInconsistencyException 无法在包中加载 nib

MonoTouch - 无法在包中加载 NIB:“NSBundle”

iOS 10:致命异常:NSInternalInconsistencyException 无法在包中加载 NIB

iOS - 无法在包中加载 NIB

无法在包中加载 Nib - 错误的 nibname 错误