无法在包中加载 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的主要内容,如果未能解决你的问题,请参考以下文章
NSInternalInconsistencyException 无法在包中加载 nib
MonoTouch - 无法在包中加载 NIB:“NSBundle”