Ошибка «Неизвестный класс <MyClass>в файле Interface Builder» во время выполнения - PullRequest
259 голосов
/ 13 ноября 2009

Несмотря на то, что Interface Builder знает о MyClass, я получаю сообщение об ошибке при запуске приложения.

Это происходит, когда MyClass является частью библиотеки, и не происходит, если я компилирую класс непосредственно в целевом приложении.

Ответы [ 46 ]

3 голосов
/ 10 июня 2010

Не только в настройках проекта, но и в настройках Target также необходимо добавить -all_load -ObjC flags ..

Core-Plot: неизвестный класс CPLayerHostingView в файле Interface Builder

3 голосов
/ 01 февраля 2012

Просто удалите MyClass.m и .h и снова добавьте их в проект - это работа для меня.

2 голосов
/ 14 августа 2014

Я столкнулся с этим в Свифте.

Перемещение файла .xib в папку проекта Base.lproj избавило от этой ошибки.

1 голос
/ 06 января 2012

У меня была эта ошибка сегодня при преобразовании моего приложения aaLuminate в Universal под Xcode 4. Это приложение основано на шаблоне утилиты и изначально было создано под Xcode 3.

Чтобы сэкономить время, я скопировал iPhone Main и Flipside Views в соответствующие имена в приложении Universal. Я столкнулся с ошибкой «Неизвестный класс x в файле Interface Builder». В моем случае ничего не было в файлах или целях XIB.

Я также скопировал файл aaLuminate-Info.plist по другим причинам - для него использовался старый ключ «Основное имя файла пера», установленный в MainWindow.

Как только я удалил этот ключ, это устранило проблему!

1 голос
/ 22 февраля 2012

В моем случае я получил эту ошибку, потому что пытался сохранить некоторую работу, создав новый проект, а затем удалив несколько исходных файлов и скопировав исходные файлы с тем же именем из рабочего проекта. Я также скопировал файл MainStoryBoard, который искал мой RootViewController. Однако когда я удалил исходный RootViewController, а затем добавил его в RootViewController из предыдущего продукта, очевидно, что операция «Добавить файлы» не смогла «поставить галочку» в целевом поле, как предложено выше. Достаточно просто просмотреть все импортированные файлы ".m" из newley и убедиться, что флажок целевого членства установлен, и все было хорошо. Я думаю, что происходило то, что файл раскадровки искал класс, который был «исключен» из ссылки, потому что целевое членство не было проверено. Удостоверившись, что требуемые файлы для цели так обозначены в целевом членстве в файловом инспекторе, сделали свое дело. Спасибо, Пэт! (см. выше)

1 голос
/ 16 марта 2012

В моем случае это было потому, что я объявил подкласс подкласса ячейки UITableView в файле .h (объявление обоих подклассов было в одном и том же файле .h), но забыл сделать пустую реализацию этой второй подкласс в .m файле.

не забудьте реализовать любой подкласс подкласса, который вы объявляете в файле .h! Звучит просто, но легко забыть, потому что Xcode сделает это за вас, если вы работаете с одним классом на файл .h / .m.

1 голос
/ 30 апреля 2013

В моем случае я удалил класс с именем viewController, не понимая, что он был выбран с помощью инспектора идентификации раскадровки (в разделе «Пользовательский класс» вверху).

Вам просто нужно просто выбрать правильный класс для контроллера представления в поле Custom Class вашего инспектора идентификации или добавить новый класс в ваш проект и выбрать его в качестве вашего Custom Class.

работал для меня!

1 голос
/ 12 апреля 2013

У меня был «Неизвестный класс RateView в Интерфейсном Разработчике», где RateView был подклассом UIView. Я поместил UIView на сцену раскадровки и изменил поле Пользовательский класс на RateView. И все же эта ошибка появилась.

Для отладки я изменил имя своего класса на RateView2 и изменил все ссылки для соответствия, кроме поля Пользовательский класс в UIView. Сообщение об ошибке все еще появлялось как прежде с RateView как отсутствующий класс. Это подтвердило, что сообщение об ошибке было связано со значением поля Пользовательский класс. Я изменил это значение на RateView2, и сообщение об ошибке изменилось на «Неизвестный класс RateView2 в Интерфейсном Разработчике». Прогресс родов.

Наконец, я проверил сами файлы исходного кода в File Inspector. Там я обнаружил, что файл исходного кода (который я скопировал из учебника) не был связан с моей целью. Другими словами, у него не было целевого членства. Я установил флажок, который сделал файл исходного кода класса членом целевого приложения, и сообщение об ошибке исчезло.

1 голос
/ 10 сентября 2013

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

1 голос
/ 04 июня 2013

Я добавил файл «В фазе сборки» в «Задачи», и проблема была решена. Инструкции по добавлению файла см. В моем ответе по адресу:

Ошибка компоновщика Apple Mach-O (APActivityIcon)

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