При компиляции с использованием Xcode 6.3 (iOS 8.3 SDK) некоторые имена файлов nib заканчиваются дополнительными ~ipad
или ~iphone
при определенных обстоятельствах. Например, ViewController~ipad.xib
становится ViewController~ipad~ipad.nib
. Это приводит к сбою, потому что приложение не ожидает, что скомпилированные файлы nib будут иметь двойной суффикс.
Xcode 6.3: Не удалось загрузить NIB в комплекте
Ответ 1
Чтобы исправить это, снимите флажок "Использовать классы размеров" в любых затронутых документах в Interface Builder.
Это, по-видимому, ошибка в версии ibtool
, включенной в Xcode 6.3 (и iOS 8.3 SDK). Это происходит в следующих случаях:
- У вас есть входной файл, специфичный для устройства
*~(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.
Ответ 2
изменить ~ на _ в имени xib и указать явно суффикс при программной загрузке пакета.
Ответ 3
Это, по-видимому, ошибка Xcode 6.3 при компиляции файлов XIB. Чтобы обойти исключения, есть 4 варианта:
- Настройте свой проект на iOS 8
- Используйте раскадровки вместо XIB файлов.
- Отключить классы классов
- Обработка загрузки NIB в коде
Я подробно описал каждый из этих вариантов в своем сообщении в блоге: http://www.joobik.com/2015/04/fixing-xcode-63-ios-sdk-error-could-not.html
Ответ 4
У меня были файлы с именем ~ и я переименовал их, но это не помогло, дело в том, что у меня нет файлов XIB, я даже пытался сменить свои раскадровки на классы размеров.
Ничего не помогает, у меня есть цель сборки для iOS 7, и мне действительно нужно поддерживать iOS 7.
Я не знаю, какой дескриптор загрузки NIB в коде означает...
Еще раз проблема заключается в том, что мое приложение в AppStore начало сбой на iOS 8.3, и если попытаться создать приложение в XCode 6.3, используя мой iPad Air, работающий под управлением iOS 8.3, он сразу же сработает с этим сообщением:
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: ....
Спасибо за помощь.