Xcode 6.3: 无法加载捆绑包中的 NIB

Xcode 6.3: Could not load NIB in bundle

当使用 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

如果您看到相同的行为,请复制 this radar 这似乎已在最新的 Xcode 6.4 测试版中修复。

这似乎是 Xcode 6.3 编译 XIB 文件时的错误。为了解决异常,有 4 个选项:

  1. 将您的项目定位到 iOS 8
  2. 使用故事板代替 XIB 文件
  3. 禁用尺寸类
  4. 在代码中处理 NIB 加载

我在我的博客 post 中详细介绍了每个选项:http://www.joobik.com/2015/04/fixing-xcode-63-ios-sdk-error-could-not.html

将 xib 名称中的 ~ 更改为 _ 并在以编程方式加载包时明确指定后缀。

我有一些用 ~ 命名的文件,我重命名了它们,但没有帮助,问题是我没有 XIB 文件,我什至试图将我的故事板更改为大小 类。

没有任何帮助,我已将构建目标设置为 iOS 7,我确实需要支持 iOS 7。

我不知道在代码中处理 NIB 加载是什么意思...

还有一次,问题是我在 AppStore 中的应用程序在 iOS 8.3 上开始崩溃,如果尝试使用我的 iPad Air 在 XCode 6.3 中构建应用程序运行 iOS 8.3 它立即崩溃并显示以下消息:

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: ....

感谢您的帮助。