Помилка під час виконання "Невідомий клас <MyClass> у файлі Builder інтерфейсу"


260

Незважаючи на те, що Interface Builder знає про це MyClass, я отримую помилку під час запуску програми.

Це відбувається, коли MyClassце частина бібліотеки, і не відбувається, якщо я компілюю клас безпосередньо в цілі програми.


Як ви посилаєтесь на бібліотеку?
Elise van Looij

Я використовую залежний підпроект і зробив перетягування з продуктів підпроекту Xcode у фазу збірки моєї поточної цілі "Пов’язати бінарне з бібліотекою".
прикол

Якщо клас походить від CocoaPods, це може допомогти github.com/CocoaPods/CocoaPods/isissue/491 .
Protocole

Може бути пов’язані? stackoverflow.com/a/24924967/511299
Sunkas

Відповіді:


222

Незважаючи на помилку " Невідомий клас MyClass у програмі Interface Builder. ", Надруковану під час виконання, ця проблема не має нічого спільного з Interface Builder, скоріше з компонувальником, який не пов'язує клас, оскільки жоден код не використовує його безпосередньо.

Коли дані .nib (зібрані з .xib) завантажуються під час виконання, MyClassпосилаються за допомогою рядка, але лінкер не аналізує функціональність коду, просто існування коду, тому він цього не знає. Оскільки жоден інший вихідний файл не посилається на цей клас, лінкер оптимізує його поза існуванням під час створення виконуваного файлу. Отже, коли Apple намагається завантажити такий клас, він не може знайти пов'язаний з ним код і друкує попередження.

За замовчуванням цілі Objective-C будуть -all_load -ObjCвстановлені за замовчуванням прапори, які зберігатимуть усі символи. Але я почав із цілі C ++, і цього не мав. Тим не менш, я знайшов спосіб цього, який тримає лінкер агресивним.

Злом, який я спочатку використовував, полягав у тому, щоб додати порожню статичну процедуру, наприклад:

+(void)_keepAtLinkTime;

що нічого не робить, але що я б зателефонував один раз, наприклад:

int main( int argc, char** argv )
{
   [MyClass _keepAtLinkTime];
   // Your code.
}

Це змусить лінкер утримувати весь клас, і помилка зникає.

Як зазначив jlstrecker у коментарях, нам не потрібно дійсно додавати _keepAtLinkTimeметод. Просто зателефонувавши до існуючого, наприклад:

   [MyClass class];

виконує трюк (поки ви походите з NSObject).

Звичайно, ви можете зателефонувати цьому в будь-якому місці вашого коду. Я думаю, це може бути навіть недосяжний код. Ідея полягає в тому, щоб обдурити лінкер в думці, яке MyClassвикористовується десь, щоб воно не було таким агресивним в оптимізації.

Xcode 6.3.2 та Swift 1.2

Швидке визначення погляду. Обов’язково переотримайте init(coder aDecoder: NSCoder). Об'єктивне-C визначення контролера перегляду. І, нитка в грушевому дереві.

Додати ім'я модуля до інспектора деталей Nib, де ви вибираєте свій клас.


2
Дані .xib не завантажуються під час виконання. Компілятор IB компілює xib до nib; кулачок - це те, що завантажується під час виконання.
Пітер Хосей

19
Не потрібно змінювати MyClass. Просто викличте метод, який він успадковує NSObject, наприклад +class.
jlstrecker

10
Хоча це було не Xcode 4, коли було розміщено оригінальне запитання, наступне все ще видається доречним. У Xcode 4 замість того, щоб додати якийсь фіктивний метод усунення помилки, ви можете перевірити всі необхідні цілі MyClass.mв розділі Цільове членство Інспектора файлів.
adubr

51
Іншою можливістю в наші дні є те, що MyClass.m може не перебувати у фазі збирання джерел компіляції. Це може статися, якщо перетягнути MyClass.h / m у проект, а не створити їх за допомогою нового файлу.
Стівен Фішер

6
@JoshBruce Ви можете пояснити рішення Swift? Я не дуже цього розумію.
Ryan Bobrowski

183

Я вирішив це відповідно до того, що запропонувала Лаура, але мені не потрібно було відтворювати файли.

  • Використовуючи XCode 4, у Навігаторі проекту виберіть файл .m, який містить клас, на який він скаржиться

  • Перейдіть до пункту Перегляд-> Утиліти-> Показати інспектор файлів
    (це покаже Файловий інспектор праворуч із інформацією про файл .m)

  • Відкрийте розділ Цільове членство та переконайтесь, що для цього .m-файлу вибрано цільову ціль

Коли я додав свій файл .m до свого проекту, він чомусь не додав його до моєї цілі за замовчуванням, і це призвело до того, що я отримав помилку, яку ви згадали.


Це правда, що іноді помилка лінкера пов’язана з тим, що в першу чергу просто не компілюється ваш файл у вашу ціль. Те, що ви описуєте, - це спосіб керування ціллю, до якого пов’язаний файл. На жаль, мій файл уже був частиною моєї цілі, але у мене все ж виникли проблеми із посиланням. Це, мабуть, пов’язано з тим, що моя бібліотека була C ++ (на відміну від Objective-C), яка має різні прапорці лінкера за замовчуванням (див. Публікації Alasdair Allan та Sijo вище).
jhoule

5
Ця пропозиція спрацювала для мене, хоча дещо інакше, оскільки мій прапорець "Цільове членство" вже був встановлений. Я зняв це з перегляду та відновив, але потім повідомлення про помилку змінилося, щоб вказати моє нове ім'я класу. Повторно встановивши прапорець і знову створивши, все зараз працює. Набагато простіше, ніж видалення файлів кешу!
електромагніт

Прекрасне рішення через інтерфейс Xcode. @electromaggot, Xcode може заплутатися під час додавання класів вручну, тому вам може знадобитися додати більше одного файлу.
Gonen

Це рішення і для мене. Я перетягнув деякі файли класів з іншого проекту, і ті файли класів були тими, що викликали виняток.
hairbo

1
Я видалив файл зі свого проекту, потім пізніше додав той самий файл, і це вирішило проблему.
MindSpiker

70

Це насправді не має нічого спільного з Interface Builder, що тут відбувається - символи не завантажуються з вашої статичної бібліотеки Xcode. Щоб вирішити цю проблему, вам потрібно додати -all_load -ObjCпрапори до Other Linker Flagsключових параметрів збірки Project (і, можливо, цільової).

Оскільки Objective-C генерує лише один символ для кожного класу, ми повинні змусити лінкер також завантажувати членів класу, використовуючи прапор -ObjC, і ми також повинні змусити включити всі наші об'єкти з нашої статичної бібліотеки, додавши -all_loadпрапор лінкера. Якщо пропустити ці прапори рано чи пізно, ви зіткнетеся з помилкою unrecognized selectorабо отримаєте інші винятки, наприклад, той, який ви спостерігали тут.


5
Я виявив, що лише -ObjCпрапор фіксував його в моєму випадку.
Кекоа

5
@Kekoa, це тому, що ваша версія Xcode (LLVM) пізніша, ніж хлопець, який пише цю відповідь. На сьогоднішній день використання -ObjCдосить добре для вирішення проблеми.
До

це мені тільки допомогло. Під час компіляції він показав необхідні проблеми, пов'язані з рамками, які також вирішили, коли я імпортував усі рамки.
Вайбхав Саран

- Лише прапор ObjC вирішив мою проблему. Я фактично отримав помилку за те, що я мав атрибут all_load в iOS7.
Sushma Satish

Використання -all_load -ObjC може спричинити непотрібне збільшення розміру продукту. ця проблема трапляється і з файлами категорій також лише в рамках.
Алі Амін

26

Я зіткнувся з цією проблемою сьогодні за допомогою Swift.

Я змінив клас Model.h + Model.mна а Model.swift. Цей об'єкт використовувався в Interface Builder з class = Model.

Як тільки я замінив об'єкт, клас більше не міг завантажуватися.

Що я повинен був зробити, це змінити посилання на клас в IB:

Class = Model
Module = 

до

Class = Model
Module = <TARGETNAME>

Ви знайдете <TARGETNAME>в налаштуваннях збірки. Це також ім'я відображається у створеному Swift-Header:#import "TARGETNAME-Swift.h"


1
Це здається правильною відповіддю. Якщо хтось не може сказати інакше, це слід позначити як правильне.
Бьорн Рутберг

1
Чудова відповідь дякую. Для мене Moduleім’я було саме там, у спадному списку. Це була назва мого додатка.
ChrisH

Це працює для мене. Для моєї проблеми <TARGETNAME>, згаданий у вашій відповіді, є ім'ям фреймворку, який містить клас.
Тайлер Лонг

Я прийшов до висновку самостійно, це також була помилка, яку я отримував, і був готовий розмістити свої висновки, коли побачив ваш пост. Я насправді бачив, але пройшов повз, через безліч відповідей та шуму навколо нього. Я думаю, що вашу відповідь можна було б покращити за допомогою скріншотів, щоб відрізняти вашу відповідь від інших. Я б точно це спіймав, якби це було так. Дуже дякую за те, що ви розмістили його тут. Ви отримали мою пропозицію.
jvarela

Для AppDelegate мені вдалося виправити це в інтерфейсі Builder інтерфейсу. Для користувацького класу елемента інтерфейсу у вікні інтерфейс інтерфейсу Builder не дозволив мені встановити спеціальний клас та модуль. Мені довелося зробити наступне: (1) Відкрити .xib файл як "вихідний код" (клацніть правою кнопкою миші на ньому). (2) Додайте атрибут "customModule = <TARGETNAME>" поруч із атрибутом customClass.
Poulsbo

20

Перейдіть до "ProjectName", натисніть на нього, а потім перейдіть на вкладку "Фази збірки", а потім натисніть на "компілювати джерела", а потім натисніть кнопку "+", з'явиться вікно, виберіть "MyClass. m "файл і натисніть" додати ",

Створіть проект та запустіть його, проблема, безумовно, буде вирішена


так, я не перевірив ВСІ цільові поля, до яких хотів додати свої нові імпортні класи. Дякую!
Джоел Бальмер,

Так! Мій файл VC відсутній у проекті Target.
Себастьян Дворник

19

Це проблема кешу Xcode4, просто видаліть усі папки в розділі / Користувачі / Ваш_користувач / Бібліотека / Підтримка програм / iPhone Simulator / 4.3 / Програми /

Крім того, якщо у вас є те саме тестування проблем на вашому iPhone, видаліть старий додаток перед його запуском ...

Удачі. Паскуаль


8
У налаштуваннях збірки проектів потрібно додати прапор "-all_load -ObjC" до клавіші "Інші прапорці лінкера". Це не конкретна проблема Xcode 4, і насправді взагалі не має нічого спільного і з Interface Builder.
Alasdair Allan

Це рішення було запропоновано в січні 2010 року (див. Вище).
джоуль

6
Так - найпростіший спосіб зробити це просто відкрити iOS Simulator і в меню вибрати «Скинути вміст і налаштування»
RanLearns

Або ви можете зробити те, що я зробив, і просто видалити відповідну програму з головного екрана Simulator. У мене було те саме повідомлення про помилку, але воно посилалось на старого делегата програми.
спстанлей

16

Іноді IBuilder пропускав 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">

Використовуючи Xcode 6.3 (6D570), як тільки я запускаю, налаштування повертається до початкового (поганого). Помилка? Я намагаюся включити швидкий файл у проект «Об’єктивний С».
addzo

На XCode 6.4, просто додавши customModuleProvider = "target" у вихідний код аркуша розкадрування, під потрібним контролером перегляду виправлено проблему.
Amro Shafie

Мені вдалося вирішити свою проблему просто customModule="MyFrameworkName". Величезні +10
Стан

Власне, моя проблема була протилежною, я хотів видалити CustomTaget, але Xcode не змінив вихідний файл xib, тому мені довелося видалити customModule = "AppName" customModuleProvider = "target", щоб змусити його працювати.
Адріана

14

Мій випадок - намагаючись використовувати клас зі швидкої рамки в моєму об'єктивному проекті c, я отримав цю помилку. Рішення полягало в тому, щоб додати модуль (швидкий фреймворк) класу в програму Interface builder / Storyboard, як показано нижче. Більш нічого

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


2
Я використовую рамку Swift в проекті Swift, встановленому CocoaPods. Цей метод працює. І назва модуля - це ім'я рамки.
JsW

1
Це чудово працює. Потрібно, чому цей модуль видалено ??
iSrinivasan27

Ідеально підходить для проблем з какаоподом ... Кудо вам для ідеальної відповіді ...
jayant rawat

13

Перейдіть до Фаз збірки-> Зберіть джерела та додайте нові .m файли.


Так, після додавання нових файлів попереднього проекту до проекту XCode 4.5, додавання файлів .m до списку джерел компіляції це було зроблено точно. Додавання "-all_load -ObjC" не працювало в моєму випадку, але не зашкодило.
whyoz

13

У моєму випадку вона показувала помилку для класу, який навіть не існував! Я підозрював, що це щось забилося у файлі розкадрівки. Якщо ви не розпізнаєте файл класу в помилці, спробуйте це:

1) відкрийте свій проект у піднесеному чи іншому хорошому редакторі. Пошук класу, на який посилаються. 2) видаліть цілий шматочок, який говорить

customClass="UnrecognizedClassName"

3) збережіть його. 4) поверніться до xcode та очистіть проект, і спробуйте запустити його зараз.

працював на мене.

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


Я використовую додаток OSX TextEdit. Це добре працювало для цієї операції. Обов’язково спочатку закрийте проект та закрийте Xcode.
TJ

Це теж допомогло. У мене було більше одного об’єкта з тим самим customClass, я, ймовірно, натиснув представлення замість контролера і призначив те саме ім'я.
Мак-

1
Це також було вирішенням проблеми, з якою я стикався; Раніше я вводив часткове ім’я класу, і якимось чином таким чином було збережено розгорнуту дошку (наприклад customClass="MyCla"). Замість того, щоб видаляти призначене для користувача класове призначення, для мене було доцільним просто ввести клас, який я мав намір використовувати в першу чергу :)
Дейв

9

Я просто хочу додати цю відповідь, оскільки більшість, якщо не всі відповіді тут, припускають, що клас існує насправді .. це просто те, що лінкер / компілятор занадто німий, щоб його бачити .. таким чином, відповіді обертаються навколо або сповіщають лінкера про існування класу або створення хака, щоб «змусити» його існувати ..

моя проблема трапляється, коли це повідомлення насправді говорить про неіснуючий клас .. тож прикладом може бути повернення мене до старої редакції git , яка не знає певного класу .. все ж компілятор скаржиться, що зазначений клас не відповідає ' t існують ..

рішення?

  • Нуке вся справа! спочатку видаліть усі файли збірки тощо, видаливши весь вміст у цьому каталозі ~ / Бібліотека / Розробник / Xcode / DerivedData
  • видаліть додаток із самого телефону (та очистіть вміст тренажера, якщо ви використовуєте тренажер)

вам слід добре піти за цим


2
Не можу поставити +1 досить цього, виправили мою проблему. Моя проблема була точно такою, де файл уже видалено, але попередження все ще з’являлось при компіляції.
Бретт

На Дошці розкадрувань вам потрібно заповнити ідентифікатор. Іноді я помилково записую його в поле "Клас" (у інспектора посвідчення особи). Тож компілятор скаржиться з причиною того, що Клас не існує!
Вінсент

9

Найкращий спосіб усунення помилки: 1) Виберіть файл класу (.m) 2) у розділі " Цільове членство ", "перевірте" запис назви проекту


Це працює. Я розробляв стручок і чомусь команда встановлення стручка застосовувала неправильну ціль до одного конкретного файлу класу. Він застосовувався до пакету ресурсів, який у мене був. Правильний конфігурація - Pods- <project-title> - <pod-title>
krosullivan

Це не працює для мене. Цільове членство є правильним, але помилка продовжує виникати.
Кокодоко

8

Я це виправив, скопіювавши текст із моїх class.h та .m, видаливши ці файли класів із проекту та створивши нові файли class.h та .m з тим самим іменем за допомогою "Додати файл". Потім я вставив код назад у нові файли, і все працювало чудово. Колись файли не були пов’язані правильно, коли вони були створені. Після цього мені не потрібно було використовувати жодних прапорців.


1
коли я вперше створив файли, у мене не було .m наприкінці. Я спробував перейменувати файл і додати його ще раз, проте мені все одно довелося видалити та відтворити файл, перш ніж xcode був задоволений.
Одіт

Ваш файл, ймовірно, не був частиною вашої цілі. Повторне додавання, ймовірно, встановило прапорець за замовчуванням у відповідній цілі.
jhoule

1
Це рішення також працювало для мене, але я переконався на 100%, що перед тим, як видалити перший клас (.h + .m), я перевірив, що він є частиною моєї цілі. Це не було для мене проблемою. Як і Лаура, я просто видалив клас і знову створив його (з іншою назвою), і він працював чудово, без жодного з інших рішень на цій сторінці.
Нейт

7

Я НАРЕШНО виправив це, я забув додати наступний код у свій .m файл:

@implementation MyTableViewCell

@end

Отже, це було викликано тому, що я створив заповнювач @interface для своєї комірки таблиці, який мав з'єднання з елементом у файлі .xib, але в програмі Interface Builder є помилка, якщо для класу не вказано @implementation, він не може його знайти.

Я пройшов усі кроки з інших форумів, коли розглядав .xib як джерело і бачив MyTableViewCell, хоча я прокоментував це з мого коду. Я спробував скинути тренажер. Я навіть намагався розбити всі свої класи на окремі файли, названі так само, як інтерфейси, але до цього нічого не вийшло.

З мого досвіду PS, не має значення, чи назви файлів .h / .m відрізняються від імен інтерфейсу @interface. У мене є кілька файлів, що містять більше одного інтерфейсу, і вони прекрасно працюють.

PPS У мене є більш детальне пояснення того, чому UITableViewCell і UICollectionViewCell викликають цю помилку за адресою https://stackoverflow.com/a/22797318/539149, а також як виявити її під час компіляції за допомогою registerClass: forCellWithReuseIdentifier :.


6

Це трапляється тому, що .xib отримав усталене посилання на старий делегат додатків, який вже не існує. Я це зафіксував так:

  • Клацніть правою кнопкою миші на .xib та виберіть Відкрити як> Вихідний код
  • У цьому файлі знайдіть старий делегат програми та замініть його на новий

Відкрити як вихідний код більше не існує, але ви можете так само легко натиснути правою кнопкою миші, Показати у Finder, потім клацнути правою кнопкою миші на файл та відкрити в TextEdit. Звичайно, резервні копії файлу, перш ніж вносити будь-які зміни;)
Скотт Аллен

6

просто додайте код нижче під час запуску програми appdelegate applicationatoindidfinishlanching, тоді він буде добре працювати

[клас miclass];


5

Я спробував це та інші відповіді, перелічені на цьому веб-сайті, жодна з яких не сортувала його для мене. Ці коментарі (з http://www.iphonedevsdk.com/forum/iphone-sdk-development/43330-unknown-class-interface-builder-file.html ) допомогли:

Після пошуку та пошуку та пошуку я нарешті виявив ім’я цього видаленого класу, прихованого у файлі. Мені довелося відкрити файли конструктора інтерфейсу в X-коді, клацнувши правою кнопкою миші та обравши «переглянути як вихідний код». Потім пошуки його придумали

<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>com.apple.InterfaceBuilder.IBCocoaTouchP lu gin</string>
<string>*this was the class name*</string>

Просто видалення останнього рядка, на жаль, не виправить це, поскаржившись, що у файлі неправильна кількість елементів. Вам потрібно видалити відповідний рядок у розділі рядків над ним, на який посилається CustomClass.


5

У моєму випадку у мене є XCode6, вказаний файл .m класу опиняється в неправильному місці у фазі збірки - він повинен був знаходитись у джерелах компіляції , але в кінціСкопіюйте ресурси групи


Завдяки вам я переглянув цей список і з’ясував, що мій файл просто відсутній, ймовірно, коли я його створив, я не встановив цілі правильно
schmru


4

Ця проблема, схоже, не застаріла.

У мене була та сама проблема з Xcode 8 і вона вирішила аналогічно, як смайлик :

  1. Відкрийте файл розкадровки як "Вихідний код" у межах Xcode:

  2. Шукайте клас, на який посилаєтесь, і видаліть цілий біт, який пише

customClass = "НерозпізнанийClassName"

  1. Відкрийте свій файл розкадровки як "інтерфейс - розробник інтерфейсів" ще раз і відновіть додаток.


3

Я мав "Невідомий клас favouritesButton у файлі Interface Builder" і відслідковував його до сцени книжок із розповідями, де у відповідній кнопці був фіктивний спеціальний клас "favouritesButton" у полі Class у верхній частині інспектора ідентичності. Я мав намір поставити це значення в наступне поле: Ідентифікаційний знак.

Зміна цього на "UIButton" вирішила проблему.


2

Я зіткнувся з цим у Свіфті.

Переміщення файлу .xib у папку Base.lproj проекту позбулося цієї помилки.


Дякуємо, що поділилися цим, але це не вирішило мою проблему. Ось рішення , яке я нарешті -то знайшов: stackoverflow.com/a/28760089/456434
Mazyod

2
Я теж зіткнувся з цією проблемою. Але в моєму випадку проблема з назвою модуля була в цьому: Див. < Stackoverflow.com/a/29013058/784318 >
Besi

1

Цю помилку я вирішив сьогодні при перетворенні програми aaLuminate в Universal під Xcode 4. Ця програма заснована на шаблоні утиліти і спочатку була побудована під Xcode 3.

Щоб заощадити час, я скопіював iPhone Main та Flipside Views у відповідні назви програми Universal. У мене виникла помилка "Невідомий клас x у файлі Interface Builder". У моєму випадку це не було нічого у файлах або цілях XIB.

Я також скопіював файл aaLuminate-Info.plist з інших причин - для цього було встановлено стару клавішу "Основне ім'я файлу основи", встановлену в MainWindow.

Як тільки я видалив цей ключ, він усунув проблему!


1

У моєму випадку я отримав цю помилку, оскільки намагався зберегти деяку роботу, створивши новий проект, а потім видаливши декілька вихідних файлів та скопіювавши з однойменних вихідних файлів з робочого проекту. Я також скопіював свій файл MainStoryBoard, який шукав мого RootViewController. Однак, коли я видалив початковий RootViewController, а потім додав його до попереднього продукту RootViewController, очевидно, що операція Додати файли не змогла "встановити" прапорець, як було запропоновано вище. Лише переглядаючи всі імпортовані файли ".m" Newley та переконуючись, що прапорець призначений для членства, все було добре. Я думаю, що сталося те, що файл розкадровки шукав клас, який був "виключений" із посилання, оскільки цільове членство не було перевірено. Переконайтесь, що потрібні файли для цілі так позначені для цільового членства в інспекторі файлів зробив свою справу. Дякую Пат! (Дивись вище)


1

У моєму випадку це було тому, що я оголосив підклас підкласу комірки UITableView у файлі .h (декларація обох підкласів знаходився в одному .h-файлі), але забув зробити пусту реалізацію цього другого підкласу .m файл.

не забудьте реалізувати будь-який підклас підкласу, який ви заявляєте у файлі .h! звучить просто, але легко забути, тому що Xcode зробить це для вас, якщо ви працюєте з одним класом на .h / .m файл.


1

У мене був "Невідомий клас RateView в Builder інтерфейсів", де RateView був підкласом UIView. Я скинув UIView на сцену розгортки і змінив поле класу Custom на RateView. І все-таки ця помилка з’явилася.

Для налагодження я змінив ім’я свого класу на RateView2 і змінив всі посилання на відповідність, крім поля спеціального класу UIView. Повідомлення про помилку все ще з'являлось, як і раніше, у RateView як відсутній клас. Це підтвердило, що повідомлення про помилку було пов’язане зі значенням поля класу Custom. Я змінив це значення на RateView2, а повідомлення про помилку змінив на "Невідомий клас RateView2 в Interface Builder". Прогрес роду.

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


1

У моєму випадку я видалив клас під назвою "viewController", не розуміючи, що його було обрано інспектором ідентичності розкладової дошки (під "Спеціальним класом" вгорі).

Вам просто потрібно вибрати правильний клас для контролера перегляду в полі "Спеціальний клас" інспектора особистості або додати новий клас до свого проекту та вибрати його як власний клас.

Працювали для мене!



1

Це трохи наштовхнуло мене, і жодна з наведених вище пропозицій не допомогла мені позбутися помилки. На щастя, у мене був лише один об’єкт IB за допомогою класу, тому я просто видалив його та додав назад із тим самим вказаним класом. Помилка пішла ...

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.