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,
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:
*~(iphone|ipad).xib
with size classes enabled.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.
change ~ to _ in the xib name and specify explicitly the suffix while loading the bundle programmatically.
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.
This appears to be a bug of Xcode 6.3 when compiling XIB files. In order to workaround the exceptions there are 4 Options:
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