Xcode 6.3:无法在捆绑中加载NIB
当使用Xcode 6.3(iOS 8.3 SDK)编译时,某些nib文件名在某些情况下最终会带有额外的~ipad
或~iphone
。 例如, ViewController~ipad.xib
成为ViewController~ipad~ipad.nib
。 这导致崩溃,因为应用程序不希望编译的nib文件具有双后缀。
要解决此问题,请在Interface Builder中的任何受影响的文档中取消选中“使用大小类”。
这似乎是Xcode 6.3(以及iOS 8.3 SDK)中包含的ibtool
版本中的一个错误。 它发生在以下情况:
- 您有一个特定于设备的输入文件
*~(iphone|ipad).xib
,启用了大小类。 - 您的部署目标是比iOS 8.0更早的版本。
我能够在命令行上重现该问题:
xcrun --sdk iphonesimulator8.3 ibtool --minimum-deployment-target 7.0 --compile ViewController~ipad.nib ViewController~ipad.xib
如果您看到相同的行为,请复制此雷达 。 这似乎是在最新的Xcode 6.4 beta中修复的。
在xib名称中将〜更改为_并在以编程方式加载包时明确指定后缀。
在编译XIB文件时,这似乎是Xcode 6.3的错误。 为了解决exception问题,有4个选项:
- 将您的项目定位到iOS 8
- 使用故事板而不是XIB文件
- 禁用大小类
- 处理代码中的NIB加载
我在博文中详细介绍了这些选项: http : //www.joobik.com/2015/04/fixing-xcode-63-ios-sdk-error-could-not.html
我有一些以〜命名的文件,我将它们重命名,但它没有帮助,问题是我没有XIB文件,我甚至试图将我的故事板改为大小类。
没有什么是有帮助的,我已经将目标设置为iOS 7,我真的需要支持iOS 7。
我不知道代码中的NIB加载是什么意思…
再一次,问题是AppStore中的App开始在iOS 8.3上崩溃,如果尝试使用运行iOS 8.3的iPad Air在XCode 6.3中构建App,它会立即崩溃:
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: ....
感谢帮助。