Ошибка Xcode 6: Неизвестный класс в файле Interface Builder

Я обновился до Xcode 6 beta 4, и теперь мое приложение постоянно вылетает с сообщением

Неизвестный класс X в файле Interface Builder.

Он сбой, потому что предположительно Xcode не может найти мои пользовательские классы, которые я связал в своей раскадровке, но он показывает, что они правильно связаны в интерфейсе Xcode.

Я уверен, что все правильно связано. Моим единственным другим вариантом может быть удаление всего файла раскадровки и запуск с нуля, потому что он может быть поврежден каким-то образом.

Edit: Я также хотел бы добавить, что я пробовал чистить, симулятор ремиксов, возиться со стадиями сборки и т. Д. Ничего из этого не работает.

ios,xcode,xcode6,interface-builder,uistoryboard,

536

Ответов: 30


1307 ов принято

Я решил этот вопрос, когда я вводил вопрос. Я решил, что отвечу на мой вопрос и оставлю его для всех, кто может столкнуться с этой проблемой при использовании Xcode 6 beta 4.

Чтобы решить эту проблему, вам нужно выбрать каждый из ваших пользовательских объектов класса в Storyboard (сюда входят любые пользовательские представления, даже сами пользовательские контроллеры представлений).

Затем с выбранными объектами откройте инспектор идентификации и в разделе «Пользовательский класс» вы увидите параметр «Модуль». Щелкните внутри текстового поля «Модуль» и нажмите «Ввод».

Это оно! Текущий модуль для всех моих пользовательских объектов должен быть некорректно установлен некорректно в Xcode 6 beta 4. Но визуальный указатель на это не был инспектором.

Обратите внимание, что если нажатие ввода внутри текстового поля модуля не работает, попробуйте выбрать стрелку вправо и вручную выберите текущий модуль, затем очистите текстовое поле и нажмите клавишу ввода. Вы также можете попробовать нажать enter внутри текстового поля класса (хотя обычно это должно решить другую проблему).

Вот изображение, чтобы сделать вещи более ясными: введите описание изображения здесь


93

Иногда Xcode пропущен customModule="AppName" customModuleProvider="target"

Чтобы исправить это, откройте раскадровку как исходный код и замените эту строку:

<viewController storyboardIdentifier="StoryboardId" id="SomeID" customClass="CustomClass"
sceneMemberID="viewController">

к этому:

<viewController storyboardIdentifier="StoryboardId" id="SomeID" customClass="CustomClass"
 customModule="AppName" customModuleProvider="target" sceneMemberID="viewController">

67

У меня была эта проблема после переименования быстрого класса. Решил его с помощью директивы @objc:

@objc(ForumTopicListViewController) class ForumTopicListViewController

52

Это сработало для меня ..

Проверьте свой скомпилированный источник, добавлен ли этот файл (например, ViewController.m) или нет, в моем случае файл ViewController не был добавлен, поэтому он дал мне ошибку.

введите описание изображения здесь


43

Это может произойти в любом Xcode выше 6.0. Это случилось со мной после переименования некоторых классов ViewController в проекте Swift (но, я думаю, это произойдет и с Obj-C). Вам просто нужно открыть конструктор интерфейса, перейдите в Identity Inspector ViewController, который переименовал его класс, выберите класс и нажмите Enter. Это переназначает переименованный класс на выбранный ViewController, а также сбросит значение модуля, которое потеряется после переименования класса.

Обновление для Xcode 8.1 (возможно, также 8.0):

Xcode 8.1 просто падает. Просто и досадно просто падает и ничего не печатает. Я преследовал этот фантомный крах в течение часа, чтобы узнать, что это было то же самое - неназначенный класс в IB. Если вы получаете некоторые фантомные сбои, сначала проверьте IB для непризнанных классов.

ИОС, Xcode, xcode6, интерфейс-строитель, uistoryboard,
Похожие вопросы