Xcode 6.3: Could not load NIB in bundle

2019-01-15 12:18发布

问题:

When compiled using Xcode 6.3 (iOS 8.3 SDK), some nib filenames end up with an extra ~ipad or ~iphone in certain circumstances. For example, ViewController~ipad.xib becomes ViewController~ipad~ipad.nib. This is causing a crash because the app doesn't expect the compiled nib files to have the double suffix.

回答1:

To fix this, uncheck “Use Size Classes” in any affected documents in Interface Builder.

This appears to be a bug in the version of ibtool included with Xcode 6.3 (and the iOS 8.3 SDK). It's happening in the following circumstances:

  • You have a device-specific input file *~(iphone|ipad).xib with size classes enabled.
  • Your deployment target is anything older than iOS 8.0.

I was able to reproduce the problem on the command line:

xcrun --sdk iphonesimulator8.3 ibtool --minimum-deployment-target 7.0 --compile ViewController~ipad.nib ViewController~ipad.xib

If you're seeing the same behavior, please duplicate this radar. This appears to be fixed in the latest Xcode 6.4 beta.



回答2:

change ~ to _ in the xib name and specify explicitly the suffix while loading the bundle programmatically.



回答3:

This appears to be a bug of Xcode 6.3 when compiling XIB files. In order to workaround the exceptions there are 4 Options:

  1. Target your project to iOS 8
  2. Use storyboards instead of XIB files
  3. Disable Size Classes
  4. Handle NIB loading in code

I detailed each of these options in my blog post: http://www.joobik.com/2015/04/fixing-xcode-63-ios-sdk-error-could-not.html



回答4:

I had some files named with ~ and I renamed them, but it did not help, the thing is that I have no XIB files, I even tried to change my Storyboards to Size Classes.

Nothing is helping, I have build target set to iOS 7 and I really need to support iOS 7.

I do not know what handle NIB loading in code means...

One more time, the problem is that my App in AppStore started to crash on iOS 8.3, and if try to build the App in XCode 6.3 using my iPad Air running iOS 8.3 it crashes right away with this message:

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

Thanks for help.