Ошибка «Не удалось загрузить NIB в комплекте» на iPhone, но не на симуляторе - PullRequest
0 голосов
/ 02 марта 2012

До вчерашнего дня у меня было отлично работающее приложение на моем iPhone. Вчера я сделал несколько настроек, и теперь приложение работает на моем симуляторе, но не на iPhone. Сообщение об ошибке, которое я получаю, появляется сразу после завершения «applicationDidFinishLaunching».

Ошибка: NSInternalInconsistencyException, причина: «Не удалось загрузить NIB в комплекте:« NSBundle ....> (загружен) »с именем« RootViewController »« »

Странно то, что у меня нет ни одного xib-файла с именем RootViewController. Я переименовал мой месяц назад в CategoryViewController, и до вчерашнего дня это работало нормально. Я проверил в каждом из моих viewControllers, что нет ссылки на «RootViewController».

Я искал с помощью "CTRL + shift + F", "RootViewController", и в моем проекте нет файла, который бы упоминал об этом.

Тонкая настройка, которую я делал, была связана с целевым info.plist, и я только добавил, что Приложение поддерживает опцию обмена файлами iTunes. Вот мой info.plist на случай, если я что-то напутал:

info.plist

Я также вчера запускал "Чистую" впервые.

Я проверил, что мой файл MainWindow.xib содержит все соединения, которые он должен иметь, и сравнил это с исходным примером проекта, который я использовал в качестве основы.

Я пытался вернуть проект к более раннему снимку, когда я уверен, что он работал, а теперь это даже не работает. Кажется, у меня поврежден комплект iPhone. Но он делает то же самое, даже после того, как я удалю приложение с моего iPhone и попробую снова.

Как мне отладить это? Я уже 10 часов пытаюсь это исправить, и мне действительно нужна помощь.

Ответы [ 2 ]

0 голосов
/ 22 марта 2012

Это было решено путем рефакторинга и переименования моего первого viewController обратно в RootViewController. Мораль этой истории заключается в том, чтобы не изменять имя RootViewController. Есть встроенные ссылки на него, которые не легко изменить. Нет реальной необходимости использовать другое имя. Как только я это сделал, все снова заработало.

0 голосов
/ 02 марта 2012

Шаблоны Xcode создают файл Info.plist, который определяет основной файл пера.

- по умолчанию имя пера "MainWindow".
Версия этого пера по умолчанию содержит контроллер навигации, который ссылается на представление с именем «RootViewController».

Однако у каждого из них могут быть варианты для iPhone или iPad. К этим файлам добавлен ~ iphone или ~ ipad. Система автоматически выберет вариант по суффиксу.

По этой причине вы могли получить другой файл пера, который пытался загрузить RootViewController.

Кроме того, если у вас внутри контроллера есть представление или контроллер представления, который ссылается на RootViewController, ОС попытается загрузить его. (Он создает почти все в файле пера после его открытия.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...