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

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

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

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

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

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


person Epic Byte    schedule 24.07.2014    source источник
comment
Возможный дубликат stackoverflow.com/questions/3416269 /   -  person Bouke    schedule 24.07.2014
comment
@ ImreKelényi Вы правы. Это случилось со мной недавно снова после того, как я сделал то, что вы только что описали.   -  person Epic Byte    schedule 22.08.2014
comment
Это сработало для меня, stackoverflow.com/questions/1725881/   -  person vrunoa    schedule 13.05.2015
comment
Для меня это была опечатка, отладить ее в элементе Control, пока она не появится, выберите; Контроллер представления ›Инспектор идентичности› Пользовательский класс ›Класс. удалите это, если этот класс не определен.   -  person mavericks    schedule 30.09.2015
comment
ПОЖАЛУЙСТА, ОБРАТИ ВНИМАНИЕ! Эта ошибка может иметь различное происхождение. Если принятый ответ вам не подходит, спуститесь вниз и попробуйте следующий ответ. Правильным ответом для моей ситуации был 5-й ответ.   -  person Jacksonkr    schedule 10.02.2016
comment
Если вы здесь из-за библиотеки TextFieldEffects (github.com/raulriera/TextFieldEffects/tree /1.1.1), как и я, обратите внимание, что это решило мою проблему.   -  person rigdonmr    schedule 10.04.2016


Ответы (52)


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

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

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

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

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

Вот изображение, чтобы прояснить ситуацию: введите описание изображения здесь

person Epic Byte    schedule 24.07.2014
comment
Для меня щелчок внутри модуля и нажатие клавиши ввода не работали последовательно, но выбор поля класса (и нажатие клавиши ввода) всегда выполнял свою работу. - person Imre Kelényi; 22.08.2014
comment
Я получал эту ошибку, потому что я изменил имя своего приложения, поэтому все модули были неправильными. - person jamespick; 26.08.2014
comment
@itedi хороший момент, когда у меня будет возможность, я думаю, что добавлю раздел «Причины» и перечислю все, что, по сообщениям пользователей, вызывало проблему, чтобы мы могли получить список того, что приводит к проблеме. - person Epic Byte; 26.08.2014
comment
gfrs: У меня это не работает ... Вы пробовали с Xocde 6 beta 6? - person Nitin; 04.09.2014
comment
Не работает в ГМ. Что работает, так это ввести имя вашего модуля вручную. - person Maciej Swic; 13.09.2014
comment
А как насчет перьев, которые используются двумя разными целями сборки, и в этом случае есть два разных модуля Swift? Это единственное решение для переноса общего кода и ресурсов в их собственный модуль (тем самым ограничиваясь iOS 8) ... - person FluffulousChimp; 27.09.2014
comment
Для меня цель была установлена ​​правильно, но класс все еще не отображался в IB. Однако я заметил, что в поле «Местоположение файла» указан путь «Относительно проекта», а не «Относительно группы». Удаление ссылки на файл И группы и повторное добавление ее в корень проекта сработало для меня. - person knl; 21.10.2014
comment
Мне еще предстоит найти решение. Это может быть самая неприятная ошибка, с которой я когда-либо сталкивался. - person Ryan Smith; 24.10.2014
comment
Вот это да. Спасибо за это, иначе я бы туда не попал. Это устранило проблему, которая началась после того, как я добавил @objc(...) в один из моих классов Swift. - person ndbroadbent; 08.11.2014
comment
Для меня решение было другим. Вам необходимо добавить .m класса к скомпилированным источникам цели на этапе сборки. - person Ruud Visser; 24.03.2015
comment
Эта ошибка была вызвана для меня созданием нового класса и его подклассом из уже существующего класса, который я создал. Не уверен, почему это могло вызвать это. - person SamG; 27.03.2015
comment
У меня такая же проблема, но я получаю только сообщение об ошибке в журнале консоли без сбоя приложения. Я пробовал ваше решение, но имя моего модуля пустое, поэтому мне ничего не остается, кроме как оставить его. Странный - person Alfro; 27.04.2015
comment
Поле "Мой модуль" не вызывает проблем. У меня были проблемы только с полем Class, так как мой класс не был выбран должным образом из-за копирования и вставки. После выбора правильного класса для поля Class проблем больше не было. - person Andrej; 15.06.2015
comment
В моем случае я не добавил .m файл настраиваемого класса в список источников компиляции моей цели. - person oarfish; 21.06.2015
comment
мне пришлось вручную перетащить файл реализации .m в раздел «Источники компиляции» на этапах сборки. - person sudoExclaimationExclaimation; 12.07.2015
comment
Я провел четыре часа в кроличьей норе, когда наконец нашел этот пост. Большое спасибо. Я почти сдался. - person Pete Varley; 30.08.2015
comment
@EpicByte Я использую 6.3. И созданный мной xib почему-то решил, что было бы слишком круто иметь для него установленный модуль. Не знаю, что бы я сделал без вашего ответа! - person Rajeev Bhatia; 01.10.2015
comment
Xcode иногда помещает исходные файлы в Base.lproj (при создании или при копировании в проект, если необходимо, проверяется при перетаскивании), и это предотвращает добавление файла в скомпилированные источники, после его очистки и добавления в скомпилированные источники. , вы должны щелкнуть имя класса и нажать Enter, как указано в других комментариях - person owenfi; 04.11.2015
comment
Сейчас конец 2015 года, и это все еще работало как шарм! Большое спасибо!!! - person Sonic Master; 04.12.2015
comment
Также работает для XCode 7.1.1 - person z22; 16.12.2015
comment
Эта проблема все еще присутствует в XCode 7.2. Это решение сработало. - person Tom Fast; 17.12.2015
comment
В моем случае в xCode7.2 это не было проблемой преобразования, но возникло, когда я создал собственный класс UIViewController и изначально назвал его неправильно. Не уверен, что это связано, но решение сработало. - person Opus1217; 19.01.2016
comment
Эпический ответ от @EpicByte (y). Очень простой способ найти первопричину проблемы и исправить (конечно же). - person pkc456; 09.02.2016
comment
В моем случае у меня был собственный класс в локальной структуре, и нажатие клавиши ввода в поле модуля не сработало. Мне пришлось вручную выбрать фреймворк в поле модуля, чтобы он заработал. - person timgcarlson; 23.02.2016
comment
Мне пришлось очистить и повторно ввести имя моего настраиваемого класса, после чего он правильно нашел модуль. W Это также с XCode 7.2. - person Tony Heupel; 29.02.2016
comment
вы, ребята, знаете, что именно должно быть написано в поле "Модуль"? Выбор / отмена выбора / повторный выбор поля класса вообще не меняет поле модуля. И, кстати, любой из моих других венчурных капиталистов имеет установленный модуль, у них всех нет ни одного, что не вызывает проблем. Зачем это должно быть у этого? - person omarojo; 20.04.2016
comment
Просто столкнулся с этим на Xcode 7.3, решение отлично работало. - person zic10; 28.04.2016
comment
не работает для xcode 7.3.1 с быстрым компонентом в проекте objective-c - person Ahd Radwan; 29.05.2016
comment
Меня это СНОВА укусило. Я забыл об этом и провел еще пару часов, думая, что неправильно подсунул перо или что-то в этом роде. Все еще происходит в Xcode 7.3.1 !! - person Paul Bruneau; 03.06.2016
comment
это помогло мне избавиться от предупреждения / ошибки, хотя я заметил, что по крайней мере цвет фона, указанный в моей раскадровке, действительно отображался в запущенном приложении, несмотря на этот журнал консоли - person Alex Bollbach; 26.07.2016
comment
Спасибо Спасибо. Для потомков это произошло в моем проекте, когда я переименовал приложение. Имя модуля не обновляется до нового имени приложения, поэтому он пытается ссылаться на класс в старом проекте. Это проявлялось в том, что переход от размотки не запускался. - person John Armstrong; 14.08.2016
comment
Вы спасли мою жизнь. До xcode 8.2.1 эта проблема. Я обнаружил, что он добавляет некоторые параметры в файл xib. (Отмечено выделением) ‹collectionViewCell opaque = NO clipsSubviews = YES multipleTouchEnabled = YES contentMode = center reuseIdentifier = MyViewCell id = XdY-Ke-DXa customClass = MyViewCell customModule="MyProject" customModuleProvider="target" - person Johnny; 20.01.2017
comment
Спасибо! У моего приложения есть несколько целей, поэтому мне нужно было нажать ввод в поле Module, чтобы установить для него значение Current - (имя цели) - person Vee; 14.02.2017
comment
Это все еще проблема в Xcode 8.2.1. Спасибо за полезный ответ! - person BigSauce; 19.03.2017
comment
Это все еще проблема в Xcode 8.3.1 ... такой позор - person Sepehr Behroozi; 09.04.2017
comment
Пользователь Xcode 8.3.3 здесь, спасибо, он решил мою проблему. - person gabicuesta; 09.08.2017
comment
Xcode Version 9.0 beta 6, и проблема не устранена ???? - person Rafael Bugajewski; 04.09.2017
comment
Обратите внимание, что если вы используете Carthage, раскрывающийся список для модуля может ничего не отображать, но вы можете просто вручную ввести имя модуля, и он будет работать. - person NSExceptional; 11.05.2018
comment
Ничего себе, на это ответили в 2014 году, и я все же обнаружил, что это произошло в июне 2018 года. - person Wayneio; 30.06.2018
comment
Вы спасли мою жизнь. Фактическая проблема заключалась в том, что мы должны отметить опцию Inherit Module From Target в файле раскадровки. - person viper; 24.09.2018
comment
Пользователь XCode 10.0 здесь - person Chris Allinson; 14.10.2018
comment
Когда я нажимаю клавишу возврата в настраиваемом классе, он очищает модуль, чтобы он был пустым (только в этой одной сцене в раскадровке). а затем раскрывающийся список модулей пуст (хотя у меня есть 2 цели, которые работают со всеми моими другими контроллерами представления). Возможно, это как-то связано с использованием этой раскадровки, и класс, который не распознается, является классом objective-c, тогда как остальная часть проекта выполняется быстро. - person aman; 13.03.2019
comment
При включении Inherit Module From Target был выбран правильный целевой модуль - person Arnab; 09.04.2019
comment
Xcode обычно ставит галочку для вас, если вы меняете класс - к сожалению, если вы используете поиск и замену, это не так - Спасибо за ваш пост - person RichAppz; 26.06.2019
comment
О боже ... Я не знаю, как бы я понял это без этого поста! БЛАГОДАРЮ ВАС! Это сработало для меня только сейчас, после того, как я преобразовал пользовательский TableViewCell из Objective C в Swift в Xcode 11. - person Erik van der Neut; 24.09.2019
comment
Сейчас 2020 год, я использую Xcode 11, и это все еще происходит. Тем не менее, спасибо за это решение! - person Animator Joe; 13.01.2020

Иногда 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">
person ChikabuZ    schedule 30.11.2014
comment
На самом деле в моем случае мне пришлось удалить customModuleProvider, после чего ошибка исчезла. - person Maciej Swic; 11.03.2015
comment
Гильермо, все еще происходит в Xcode по состоянию на конец марта! - person Ed Manners; 27.03.2015
comment
@MaciejSwic Удаление customModuleProvider тоже помогло мне, спасибо! - person Sakiboy; 01.04.2015
comment
что насчет файлов xib? - person SleepsOnNewspapers; 28.04.2015
comment
Все еще происходит ... от таких вещей мне хочется плакать :( - person Luke; 05.05.2015
comment
Это спасало жизнь. Эта ошибка все еще возникает в ноябре 2015 года с xcode 7.1. - person KD.; 02.11.2015
comment
Спасибо за это. Это исправило все на Xcode 7.2 !! - person Arunabh Das; 17.03.2016
comment
Это сработало для меня после того, как проблема была представлена ​​при переходе на Swift 3 в бета-версии Xcode 8. - person Henrik; 03.07.2016
comment
этот сбой случился со мной после того, как я переименовал файл xib ячейки представления коллекции. Но ручной выбор модуля, как показано, снова заставил его работать. - person David Douglas; 11.08.2016
comment
xcode 8 beta 6 - аналогичная проблема, теперь решена. Благодарю. - person t1ser; 24.08.2016
comment
Спасибо за это. Моя проблема заключалась в том, что было два storyboardIdentifiers = StoryboardId. Я попытался провести рефакторинг раскадровки, созданной, как мне кажется, с помощью Xcode 7. ей было 3 года. ВОССТАНОВИТЕ раскадровку с нуля. - person Matthew Ferguson; 07.06.2018

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

@objc(ForumTopicListViewController) class ForumTopicListViewController
person user1760527    schedule 29.09.2014
comment
Это исправило это для меня, у меня было @objc class X, и переход на @objc(X) class X работал. - person Joe; 29.10.2014
comment
Вы также можете попытаться удалить производные данные, см. stackoverflow.com/questions/24039932/ - person user1760527; 06.12.2014
comment
Возникла эта проблема после переименования класса ViewController по умолчанию из шаблона проекта единого представления. Интересно, какая магия была использована, чтобы директива @objc() не понадобилась для «исходного» класса ViewController ... - person Berend Klein Haneveld; 12.12.2014
comment
Я иду на противоположную сторону. Я указал имя модуля в файле раскадровки, но также добавил директиву @objc. - person WeZZard; 15.01.2015
comment
Это сработало для меня. Гибридный проект ObjC / Swift. Новый VC + Xib в Swift. Xib не работал. ВК был пуст. Добавил, работает. - person John; 11.05.2015
comment
Это работает, несмотря на то, что у него гораздо меньше голосов, чем на некоторые другие ответы. Спасибо, мой спаситель! - person Fomentia; 24.06.2016
comment
Работал над моим первым классом Swift в гибридном проекте в Xcode 8. У меня уже был @objc, но мне пришлось сделать его классом @objc (ClassName) ClassName, как описано. - person Oded; 20.10.2016
comment
У меня НЕ сработало. :( Также не работает решение имени модуля. - person mythicalcoder; 05.11.2016
comment
Здесь та же проблема. Если у вас есть @objc (ForumTopicListViewController), он не найдет его в Interface Builder, вам нужен @objc FormumTopicListViewController класс UIViewController - person Frost; 28.10.2018

Проект с несколькими целями

В моем случае я работаю над проектом с несколькими целями, и проблема «унаследовать от цели» не отмечена. Выбор "наследовать от цели" решил мою проблему

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

person Muhammad Nayab    schedule 08.11.2017
comment
Спасибо, что разместили это. Решил проблему, которую я видел очень быстро. - person JaredH; 26.04.2018
comment
У меня была похожая ситуация. (XCode 9.4.1) Я создал приложение для iOS под названием FilesTestA с настраиваемым UIView под названием MxFileView (который состоял из MxFileView.swift и MxFileView.xib). Затем я добавил еще одну цель: виджет «Сегодня» (FilesTestAWidget). Решение для использования MxFileView в виджете: (1) class = MxFileView; (2) установите флажок «Наследовать модуль от цели» (или снимите флажок и вручную введите FilesTestAWidget); (3) в целевом приложении убедитесь, что MxFileView.swift и MxFileView.xib включают FilesTestAWidget в свое целевое членство. - person Kenster999; 10.09.2018
comment
Это случилось со мной в новом проекте из шаблона по умолчанию в Xcode 10.1 (одна цель приложения iOS и две тестовые цели). Флажок был снят для всех моих настраиваемых контроллеров представления (и поэтому текст заполнителя был None). После прохождения и установки флажка для каждого настраиваемого контроллера представления в моей раскадровке проблема была решена. - person Mason; 24.01.2019

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

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

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

person mavericks    schedule 06.04.2015
comment
@CarmenA Вы всегда добавляете только файлы '.m' в Compile Sources. Это действительно правильное (и единственное) решение для некоторых. - person Jacksonkr; 10.02.2016
comment
Я безуспешно пробовал несколько других решений. Это сработало. По какой-то странной причине у одной цели не было единственного исходного файла, который меня устраивал. - person galactikuh; 10.01.2018
comment
для меня тоже .. Случилось из-за некоторых получить разрешение конфликта - person Eldhose; 18.08.2018

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

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

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

person jovanjovanovic    schedule 08.01.2016
comment
Спасибо за это. похоже, что после вашего предложения Xcode обновит модуль (под классом в IB) с None на Current. Я думаю, проблема в том, что простой ввод имени без нажатия Enter не запускает обновление модуля с помощью Xcode. - person rockiesGrizzly; 13.12.2016
comment
Это сработало для меня. Я случайно переименовал класс контроллера, поэтому очевидно, что он больше не существовал, когда был загружен контроллер представления. - person Litehouse; 13.05.2017

Включение Inherit Module From Target потребовало правильного целевого модуля. Это решило проблему.

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

person Arnab    schedule 09.04.2019
comment
Подтверждать. Это помогло мне решить проблему. - person Chris8447; 14.07.2019
comment
У меня обычно возникает эта проблема, когда я конвертирую контроллер представления из Objective-C в Swift. Я повторно набираю последнюю букву и нажимаю Enter. Должен сделать свое дело. - person DevNebulae; 29.02.2020

Иногда предоставляемый вами контроллер теряет свое целевое членство в текущем приложении. В этом случае нажатие клавиши Enter в поле «Модуль» ничего не даст. Перейдите к контроллеру и убедитесь, что для него задано целевое членство для текущего приложения.

person Furqan Khan    schedule 31.12.2014
comment
Это было проблемой и для меня - несколько целей приводят к тому, что файл класса случайно не включается в цель, которую я создавал. - person Ryan Kreager; 06.07.2015
comment
Я объединил файлы и пропустил это в одной из моих целей, отличный ответ - person Benjamin Jimenez; 14.09.2015
comment
Хороший, слияние pbx нарушило целевые значения членства. - person some_id; 20.02.2017

Мой ответ: установите пользовательский модуль, равный имени пользовательского модуля (в моем примере - имя пользовательского класса), как на прикрепленном скриншоте

Это решение предназначено для особого случая: для настраиваемых классов представлений из структуры Pod (или Carthage).

Инфраструктура: XCode8, Swift3

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

person Tamara    schedule 13.03.2017

Я исправил это, сделав прямо противоположное тому, что предлагал ChikabuZ (тем не менее, спасибо, что указали на это). В файле раскадровки найдите это:

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

и замените это на это:

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

Не могу поверить, сколько часов я теряю, обходя ошибки в компиляторе Swift и Xcode 6

person Orlin Georgiev    schedule 14.05.2015

Выбрав правильный Module для своего Custom Class, я решил эту проблему.

Вот :

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

person roy    schedule 21.10.2017

Я столкнулся с этой проблемой в Xcode 8, чтобы решить ее, мне пришлось изменить раскадровку в текстовом редакторе.

В общем, найдите свой элемент управления и удалите customModule и customModuleProvider из объекта управления.

Сделал для меня трюк.

person George Maisuradze    schedule 16.10.2016
comment
Ха! Хороший хак :) - person Vexy; 03.01.2018

У меня такая же проблема.

В моем случае Xcode не добавлял мой собственный класс в: Target> Build Phase> Compile Sources.

Поэтому я рекомендую вам проверить, есть ли там ваш CustomClass.m.

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

Я надеюсь, это поможет вам.

person rcmstark    schedule 26.04.2016
comment
Вот что случилось со мной, и, к счастью, я нашел выход! Я пришел сюда, чтобы ответить, но ты был первым. Спасибо!!! - person Gabriel Piffaretti; 23.10.2017

Я столкнулся с этой проблемой в Xcode 6.1, когда удалил Main.storyboard, файл LaunchScreen.xib и классы ViewController по умолчанию из своего проекта.

Я исправил это, удалив записи Launch Screen File и Main Interface из Info.plist

person Vinay Jain    schedule 05.02.2015

Убедитесь, что у вашего класса правильное целевое членство.

person Jakub Truhlář    schedule 29.08.2016

Я везде гуглил для этого. Ни один из ответов не работает для меня, пока я не встретил одного чувака, который попросил меня переместить папку моего проекта на рабочий стол. Просто это сработало автоматически. Очевидно, если у вас есть проектная папка во многих папках, XCODE действительно ломается.

person VBaarathi    schedule 10.07.2015
comment
У меня снова возникла эта проблема в Xcode 7 beta 5, так как я получил ее раньше в Xcode 6. На этот раз у меня работает этот метод. - person Jake Lin; 21.08.2015
comment
В visual studio есть похожая проблема. Но там мы получаем четкое предупреждающее сообщение о том, что путь слишком длинный, и что-то нельзя добавлять или редактировать. Не уверен, что то же самое с XCODE, но после этого эпизода я сохраняю все свои проекты либо в документах, либо на рабочем столе, и больше никогда не было этой проблемы. Я даже дал этот совет кому-то, кто использует Xamarin Studio, и у них он тоже сработал ... - person VBaarathi; 18.09.2015

Вам необходимо установить флажок «Наследовать модуль от цели».

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

person Mike Zriel    schedule 13.05.2020

Эти шаги работают для меня.

1) Очистить производные данные.
2) Удалить файлы .h и .m
3) Снова создать файлы .h и .m

person ARWIN    schedule 26.07.2015
comment
Это сработало и для меня. Я даже заставил его работать, не очищая производные данные. - person jaytrixz; 04.08.2015
comment
Это сработало для меня, большое спасибо, Арвин, но я все еще не понимаю, почему он вызывает такую ​​ошибку, потому что я ничего не менял в классе или в IB раньше - person Kirtikumar A.; 12.11.2015

Я решил это, открыв свой файл раскадровки в качестве исходного кода и используя команду-F для поиска моего неизвестного класса и удаления связанного с ним настраиваемого класса.

person Wraithseeker    schedule 01.10.2015

То, что сказал @gfrs, правильно, вам нужно установить Module. Однако однажды я столкнулся с проблемой, что мой класс не был указан в раскрывающемся списке Class. В конце концов я удалил быстрый файл, перезапустил Xcode и заново создал файл. Наконец, класс был указан и его можно было использовать в раскадровке.

Также ознакомьтесь с этим ответом, который, похоже, решает «настоящую» проблему, с которой я столкнулся.

person Bouke    schedule 24.07.2014
comment
У меня сработало удаление и повторное добавление файла класса. Спасибо! - person Nicolas Miari; 08.10.2015

Я решил эту проблему, введя имя модуля (к сожалению, выпадающий список ничего не покажет ...) в Custom Class инспектора идентичности для всех контроллеров View и представлений.

Также может потребоваться указать целевого провайдера. Для достижения этой цели вы можете открыть раскадровку в режиме исходного кода и добавить атрибут customModuleProvider в угловые скобки ViewController и View.

person Teng Long    schedule 04.06.2015

Мое решение (Xcode 8.1 Swift 3.0):

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

Откройте StoryBoard как исходный код и найдите xxx. Удалите атрибут, содержащий значение xxx. Строй и беги.

person ibrahimyilmaz    schedule 21.11.2016
comment
Какого черта? Мне это было абсолютно необходимо, спасибо. Пришлось удалить customModule="" customModuleProvider="" - person Dan Rosenstark; 11.01.2017
comment
Если мы попытаемся опубликовать приложение в магазине приложений, которое содержит подобную ошибку, приложение будет отклонено без раздумий. - person ibrahimyilmaz; 11.01.2017
comment
Я не согласен. Я только что отправил сборку, которую мне пришлось изменить таким образом, в TestFlight, и она готова к бета-тестированию ... мы увидим, что происходит в реальном магазине приложений, но это ошибка IB IMO. Спасибо! - person Dan Rosenstark; 11.01.2017

В моем случае я добавил флаг -ObjC в Other Linker Flags в настройках проекта, чтобы он работал. Также я пробовал с флагом -all_load, и он тоже хорошо работал.

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

person Rostyslav Druzhchenko    schedule 06.06.2017

В моем случае для класса, указанного в Storyboard / xib, не было задано Целевое членство.

Чтобы исправить это, дайте файлам .h и .m этого класса такое же целевое членство, что и другим классам.

Целевое членство не задано.

person pkamb    schedule 22.05.2015
comment
Это была моя проблема, но, пробуя различные решения, я вызвал проблему, которую исправляет ответ Epic Byte. У вас должен быть исходный код в целевой цели, которую вы создаете, но также в IB вам необходимо установить контроллер представления как часть текущей цели. - person SafeFastExpressive; 04.02.2017
comment
Целевое членство было моей проблемой, я искал везде, но благодаря этому ответу я смог ее решить. - person Borzh; 01.03.2017

Мое решение заключалось в том, чтобы удалить @objc из определения пользовательского класса.

person DenisKirillov    schedule 15.07.2015
comment
Какой-нибудь пример с объяснением был бы отличным. - person Nilambar Sharma; 15.07.2015

Я столкнулся с проблемой, когда портировал раскадровку из проекта Swift в проект Objective-c, заметив ответ vvkuznetsov, оказалось, что два проекта с одинаковым идентификатором. I «Продукт -> Очистить» и нажмите клавишу «Ввод» в текстовом поле «Модуль и класс». проблема ушла.

person xhg    schedule 07.02.2015

Я исправил это в соответствии с предложением Лауры, но мне не нужно было воссоздавать файлы.

Используя XCode 4, в навигаторе проекта выберите файл .m, содержащий класс, на который он жалуется.

Перейдите в View-> Utilities-> Show File Inspector (справа отобразится File Inspector с информацией о .m-файле)

Откройте раздел Target Membership и убедитесь, что ваша цель выбрана для этого .m-файла.

Когда я добавил свой .m файл в свой проект, он по какой-то причине не добавил его в мою цель по умолчанию, и это привело к тому, что я получил указанную вами ошибку.

person Community    schedule 03.10.2015

Моя проблема заключалась в ошибке пользователя. У меня был общий UIView в моей раскадровке, а в разделе Custom Class инспектора Identity Inspector я случайно изменил имя с UIView на тарабарщину.

Все, что нужно было исправить, - это вернуть его обратно на UIView.

person Scooter    schedule 10.12.2017
comment
Я сделал то же самое, но случайно добавил имя настраиваемых контроллеров представления в раздел настраиваемых классов корневого представления ViewControllers. Поэтому я искал, почему View Controller не может быть найден, когда он все время был корневым представлением. - person TMin; 13.05.2020

Что только сработало для меня, так это добавление имени модуля в файл xib ...

Так вот, файлы xib выглядят так:

mymodule.MyViewController.xib (Module being the name of the proyect, usually)

УЖАСНОЕ решение на мой взгляд, но якобы именно так Apple хочет, чтобы мы делали это сейчас.

​​Этот вопрос показывает 3 возможных решения еще в бета-версии 4 ... некоторые считают, что Apple, по-видимому, не очень помогла в этой ситуации, потому что они называют это «Работа по назначению».

person S.H.    schedule 17.09.2014

У меня была такая же проблема с Xcode версии 6.1 (6A1052d). Думаю, проблема возникает, если вы переименовали свой проект App / Xcode.

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

person patrickS    schedule 06.11.2014

У меня возникла эта проблема после того, как я добавил новую цель, а затем создал новый класс с помощью диалогового окна «Новый файл», но случайно не смог проверить новую цель, а также исходную цель в диалоговом окне создания, поэтому объект был добавлен только в мой исходная цель. Решение заключалось в том, чтобы удалить исходные файлы (удалить только ссылку), а затем добавить их обратно, используя «Добавить файлы», на этот раз проверяя обе цели.

person JulianSymes    schedule 12.11.2014

Для меня решение было другим. Вам необходимо добавить .m класса к скомпилированным источникам цели на этапе сборки.

Надеюсь это поможет!

person Ruud Visser    schedule 23.03.2015

Выберите файл неизвестного класса, откройте вкладку инспектора файлов, проверьте имя цели в Target Membership. Вот и все.

person Nix Wang    schedule 23.09.2015

Со мной это случилось, потому что мой проект назывался с "ä, ü, ö"

person SwiftNewling    schedule 11.03.2019

Я столкнулся с такой проблемой в Xcode 6, когда удалил уже включенные файлы ViewController.h и ViewController.m из моего нового проекта на основе представления и удалил сцену, которая была связана с этим классом, из раскадровки, Xcode кэширует эти файлы в папке производных данных , поэтому, если вы попытаетесь перейти в Window -> Projects -> your_project и удалить производные данные, все будет хорошо.

person JAHelia    schedule 19.11.2014

Не используйте пробелы в имени проекта, иначе Custom Class не найдет ваши собственные классы.

person bob woodwind    schedule 29.11.2014

У меня возникла проблема, когда я создал проект с тем же именем, которое уже существовало в моем каталоге проектов (хотя он был удален некоторое время назад). Я написал свое решение здесь https://stackoverflow.com/a/27763697/1654692

person vvkuznetsov    schedule 04.01.2015

Это случилось со мной, потому что мой класс был помечен @objc и в sotryboard он не смог найти модуль. Удаление @objc устранило проблему

person aryaxt    schedule 29.01.2015

У меня была та же проблема, но не то же самое.

Папка проекта была немного повреждена, поэтому мне пришлось скопировать папку проекта в другую папку, например, на рабочий стол, и после этого открыть проект.

Когда он откроется, перейдите в свой проект построителя интерфейса, и вы увидите, что он распознает ваш скрипт. Затем вы действительно щелкаете имя своего скрипта и нажимаете ввод, и вы увидите, что ввод модуля заполнит его самостоятельно.

И это будет работать как шарм! : D

person Jippe Joosten    schedule 21.03.2015

Это сработало для меня, когда ничего не помогло. Из каталога проекта в терминале:

[~/Developer/MyProject] grep -rn ViewController * | grep -i xib 

Откройте соответствующие файлы как исходный код в Xcode и измените любые экземпляры ViewController на то, что вам действительно нужно. В моем случае файл, который мне нужно было открыть в качестве источника, был Main.storyboard, и я изменил экземпляры ViewController на DetailViewController.

Я удалил два файла из Xcode и main.storyboard, что, как я считаю, вызвало у меня эту проблему.

person N R    schedule 08.04.2015

В случае mij ViewController.h / m, где в lib. Проекты все еще строятся, но начиная с Xcode 6.3 вышеупомянутая ошибка отображалась во время выполнения. Перемещение обоих файлов обратно в проект решило проблему.

person OnTwoWheels    schedule 17.04.2015

Я играл с классом Spring. И эта ошибка произошла со мной, потому что я использовал папку в качестве ссылки при перемещении всего класса папки в проект вместо создания групп. Итак, это было мое решение: не используйте папку как ссылку, а создавайте группы.

person Goran Jakovljevic    schedule 21.04.2015

в моем случае я настраиваю приложение как универсальное приложение, поэтому xcode создает две раскадровки. но я использовал только (разработанную) только раскадровку для iPhone. и пытаюсь запустить приложение на iPad. для решения проблемы просто нужно сделать приложение только для iPhone и отлично работает.

person bLacK hoLE    schedule 26.06.2015

У меня была такая же проблема с Xcode 6.3, когда я добавлял файлы в «myapp». Это потому, что я выбираю «создать ссылку на папку» вместо «создавать группы». Я удаляю эти файлы и снова добавляю их с помощью опции «создать группы». И проблема устранена.

person wj2061    schedule 22.07.2015

Для меня я использую Xcode7 + Swift2

Решил эту проблему, проверив мой код, у меня есть эта строка в моем viewController:

 self?.navigationController?.pushViewController(vc, animated: true)

Затем я понял, что у меня нет navigationController, подключенного к странице сведений. Поэтому, если вы запускаете новый ViewController с индивидуальным идентификатором, лучше это проверить.

person Chong Guo    schedule 01.04.2016

Моя проблема была связана с фреймворком подфайлов (в частности, «BWWalkthrough»). Ни одно из вышеперечисленных решений не помогло мне, и как бы я ни пытался, мне не удавалось заставить модуль указывать на мое приложение.

Что в итоге сработало для меня, так это удаление библиотеки как подфайла и добавление ее непосредственно в мой проект в качестве статической библиотеки. После этого у меня все шло как по маслу. Не совсем уверен, что было «сломано» с реализацией класса pod.

person Simon    schedule 27.04.2016
comment
У меня была такая же проблема с настраиваемым модулем - мне помогла установка модуля на имя модуля. Вы можете найти здесь мой ответ с иллюстрацией снимка экрана, если это необходимо. - person Tamara; 13.03.2017
comment
Установка модуля как BWWalkthrough заставила меня отправлять сообщения. - person Alexandre G; 06.06.2017

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

Мы прошли через XIB и запустили изображения в раскадровки, а я еще не успел заставить экран запуска снова заработать. Когда я, наконец, добрался до создания раскадровки для запуска без каких-либо настраиваемых контроллеров представления (которые не разрешены), эти ошибки консоли перестали появляться.

person Eric McNeill    schedule 08.06.2016

Для меня проблема заключалась в том, что я ссылался на настраиваемый класс в раскадровке (который соответствовал файлу .h), но у меня не было команды @implementation в файле .m.

person theDuncs    schedule 13.07.2016

Решение Swift 3.

Все это НЕ работало.

  1. Щелчок по Module на правой панели НЕ работал.
  2. Добавление @obj НЕ помогло.
  3. Перезагрузка НЕ ​​прошла.
  4. Переход на рабочий стол, когда xcode ломается для более длинного пути, НЕ работает. ...

Наконец-то это сработало.

Просто создайте новый каталог и создайте в нем новый проект. Добавьте файлы, кроме Main.sotryboard.

Теперь скопируйте контроллеры представления из предыдущего проекта и вставьте его в новый Main.storyboard.

Вуаля! Это работает.

person mythicalcoder    schedule 05.11.2016
comment
Можете ли вы проверить git и увидеть, что изменилось внутри раскадровки? Было бы хорошо исправить это вручную, если это просто… - person buildsucceeded; 23.11.2016
comment
Я не использовал git для этого проекта. - person mythicalcoder; 23.11.2016

Я PyObjC пользователь, и у меня был NSView подкласс в отдельном файле. Для меня эту проблему решило перемещение подкласса NSView из его собственного файла в мой AppController.py файл. Это файл, в котором находится контроллер приложения.

person user1766438    schedule 18.07.2018

Это действительно странно, когда XCode 10 остановился, чтобы «уточнить отладку».
В моем случае я установил UITableViewDelegate и UITableViewDataSource с помощью Storyboard и забыл реализовать эти необходимые методы.
Я просто хотел сначала протестировать представление, прежде чем реализовывать эти методы , а затем крах! XCode 9, будет предупреждать об этих методах, но XCode 10, действительно замедлил мой код, не в этом, в других я испытал это «сомнение в ошибке».
Надеюсь, это кому-то поможет.
Спасибо

person Daniel Arantes Loverde    schedule 01.12.2018

Для меня я пробовал, что все решения в этом вопросе не сработали, я, наконец, сделал это.

скопируйте файлы pod .h .m в мой проект и импортируйте .h в заголовок c моего проекта.

затем я вернулся к раскадровке, класс был UICountingLabel, я удалил его и нажал ввод (пустой без класса), затем я добавил его снова и нажал ввод, работал успешно.

person Khodour.F    schedule 20.07.2020