Не удалось загрузить нить в комплекте на устройстве iPhone
Я пытаюсь протестировать приложение, которое я разрабатываю на своем iPhone. Для этого я сменил цель с Simulator на Device на Xcode. Приложение правильно загружено на устройство, и оно работает. Отобразится основное представление, но если я попытаюсь открыть вторичный вид, приложение выйдет из строя.
В журнале iPhone (я установил утилиту конфигурации iPhone, чтобы увидеть консоль [это единственный способ увидеть журнал с iPhone?]). Я вижу эту ошибку:
Could not load NIB in bundle
Но на симуляторе он работает отлично. Что не так? Любые идеи?
Ответы
Ответ 1
Я обнаружил, что иногда устройство чувствительно к регистру, а симулятор - нет.
Какое имя файла вашего xib?
или
Попробуйте удалить приложение из симулятора и снова установить его - у симулятора может быть старый файл, оставшийся после предыдущего запуска приложения - вы вообще переименовали/перенесли xib во время разработки?
Ответ 2
У меня была такая же проблема, и я исправил ее так:
- Открыть цель XCode
- Перейдите на вкладку "Фазы сборки"
- Нажмите раздел "Копировать ресурсы пакета"
- Нажмите кнопку +
- Добавьте отсутствующий файл Nib
Ответ 3
У меня была аналогичная проблема, и я получал ту же ошибку. Оказывается, я использовал полное имя xib файла на панели атрибутов в разделе "NIB Name:"
Не используйте "SomeViewController.xib", просто используйте "SomeViewController" без расширения ".xib".
Ответ 4
У меня была такая же проблема при вызове initWithNibName:@"MyViewController"
Смена вызова на initWithNibName:NSStringFromClass([MyViewController class])
хорошо работала
Ответ 5
Вы можете попробовать следующее:
- Убедитесь, что дело правильное.
- Использовать имя файла xib без расширения .xib.
- Удалите любые (тире) или другие специальные символы, используйте _ (подчеркивание)
- Удалите файл xib из проекта и добавьте обратно в проект Xcode
- Проверьте настройки сборки и убедитесь, что развертывание изменено для коррекции SDK
Ответ 6
В моем случае xib просто не копировался в связку. Как только я добавил xib в "Copy Bundle Resources" для целевого приложения, все прошло нормально.
Ответ 7
Мне удалось решить эту проблему с помощью этих двух шагов:
- В диспетчере файлов контроллера просмотра удалите любую локализацию
(только для тестирования)
- Убедитесь, что вы проверили правильное целевое членство.
Я не знаю, почему он работает на симуляторе: (
Ответ 8
Я столкнулся с той же проблемой. В моем случае имя nib было "MyViewController.xib", и я переименовал его в "MyView.xib". Это избавило от ошибки.
Я также перемещал проект с XCode 3 на 4.2. Изменение типа Path не имело значения.
Ответ 9
У меня было такое же сообщение об ошибке.
Моя проблема, однако, заключалась в том, что мои настройки языка на моем телефоне были установлены на "английском языке" и в регионе "Соединенное Королевство". Однако файл, который нельзя загрузить, был помещен в каталог de.lproj.
Перемещение файла в корневую директорию разрешило его.
Ответ 10
Для меня проблема была именно в том, что сказал FreeAsInBeer: ник почему-то не пропал из комплекта, тогда как он был там раньше и правильно работал в предыдущих версиях приложения.
Чтобы устранить проблему, я сделал следующее:
- Выберите проект в Навигаторе проектов.
- В настройках проекта выберите Фазы сборки.
- Развернуть Ресурсы копирования ресурсов.
- Прокрутите вниз (при необходимости) и нажмите кнопку +.
- В появившемся диалоговом окне нажмите кнопку Добавить другое....
- Найдите отсутствующий файл .XIB в файловой системе.
- Сборка и запуск... при запуске должен появиться отсутствующий значок.
Это то, что сработало для меня, когда я получил это сообщение. Ваш пробег может отличаться, поскольку обстоятельства не всегда одинаковы для всех, но я надеюсь, что это поможет кому-то, кто сталкивается с этой проблемой.
-Evan
Ответ 11
Простая ошибка, которая может вызвать эту ошибку, - это попытка initWithNibName на импортированном viewController, когда вы используете раскадровку, а не отдельные файлы Nib. Если это так, тогда просто запустите контроллер вместо того, чтобы пытаться инициализировать с помощью ниба, который не существует, или запустите эти поля с помощью nil.
Если Storyboard и no nib, измените initWithNibName: bundle: просто init или initWithNibName: nil bundle: nil
Ответ 12
Для чего это стоит, я получил эту ошибку, когда у одной из кнопок панели вкладок был присвоен неправильный класс.
Ответ 13
Мне нужно запустить его с удалением всей локализации из xib
В правом окне.
Возможно, файл находится в папке локализации.
Ответ 14
У меня та же проблема. И мое решение - удалить все локализации для представления.
Ответ 15
У меня было точно такое поведение, которое вы описали: работает на симуляторе, но при запуске на устройстве загружается "Невозможно загрузить NIB в комплекте", и приложение остается застреленным на снимке запуска.
В моем случае проблема была в файле MainWindow.xib, который Xcode автоматически создавался с английской локализацией. Я поддерживаю английский и итальянский языки в своем приложении и понял, что мне не хватает локализованной версии MainWindow.xib для итальянского языка.
Поскольку мне не нужно было локализовать этот файл (он по умолчанию стал Xcode для его локализации), я устранил проблему, просто удалив английскую локализацию, поэтому тот же файл используется независимо от локализации. Другой способ устранить проблему - добавить недостающую локализованную версию, если вам это нужно.
Приложение сбой на устройстве, потому что мое устройство настроено на итальянский язык. Вместо этого симулятор был установлен на английский, и поэтому приложение работает правильно. Просто чтобы проверить, я установил симулятор на итальянский язык, и приложение потерпело крах, подтвердив проблему локализации.
Ответ 16
У меня также была эта проблема, когда я загрузил контроллер дочернего представления из initWithCoder, что является хорошим местом для инициализации, но имейте в виду, что вы должны добавить его как фактический дочерний элемент ПОСЛЕ загрузки представления.
Итак, сдвиньте что-то вроде этого:
[self addChildViewController: self.pageViewController];
[self.view addSubview: self.pageViewController.view];
[self.pageViewController didMoveToParentViewController:self];
... из вашего метода init и в viewDidLoad. Не говорите, что это ваша проблема, в частности, но это может быть полезно для других.