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个选项:

  1. 将您的项目定位到iOS 8
  2. 使用故事板而不是XIB文件
  3. 禁用大小类
  4. 处理代码中的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: ....

感谢帮助。

Interesting Posts