Что это значит? & quot; NSUnknownKeyException, причина:… этот класс не соответствует значению ключа, кодирующему ключ X, & quot;

Я пытаюсь связать UILabel с IBOutlet, созданным в моем классе.

У меня сбой приложения со следующей ошибкой. Что это значит? Как я могу это исправить?

*** Завершение работы приложения из-за необработанного исключения «NSUnknownKeyException», причина: «[& lt; UIViewController 0x6e36ae0 & gt; setValue: forUndefinedKey:]: этот класс не соответствует значению ключа, соответствующему кодированию для ключа XXX.

вопрос задан 21.06.2010
Guillaume Dubois
1003 репутация

65 ответов


  • 1423 рейтинг

    Возможно, у вас плохое соединение в xib.

    У меня была эта ошибка много раз. Хотя в этом случае ответ TechZen является абсолютно верным, другой распространенной причиной является то, что вы меняете имя свойства IBOutlet в вашем. час/. м, который вы уже подключили к владельцу файла в перо.

    Из твоего пера:

    1. Выберите объект в IB и перейдите к «Инспектору соединений».
    2. В разделе «Ссылочные выходы» убедитесь, что ваш объект по-прежнему не связан со старым именем свойства. , , если это так, щелкните маленькую «х», чтобы удалить ссылку и построить снова.

      example 1

    Другая распространенная причина, если вы используете раскадровку, ваша UIButton может иметь более одного назначения (решение почти такое же, как для кончика):

    1. Откройте раскадровку и щелкните правой кнопкой мыши на кнопке UIB
    2. Вы увидите, что этой кнопке назначено несколько ссылок / ссылок. Уберите одного из "Главных. , , "серые окна с маленькой" х ":

      example 2

    ответ дан nuttysimple, с репутацией 2801, 10.11.2011
  • 818 рейтинг

    Возможно, в вашем контроллере вида неправильный класс.

    Я скачал ваш проект.

    Вы получаете ошибку

    'NSUnknownKeyException', причина: '[& lt; UIViewController 0x3927310 & gt; setValue: forUndefinedKey:]: этот класс не соответствует значению ключа, соответствующему кодировке для строки ключа.

    Это вызвано тем, что контроллер представления Second в MainWindow.xib имеет класс UIViewController вместо SecondView . Переход на правильный класс решает проблему.

    Кстати, это плохая практика иметь имена типа «строка» в Objective-C. Это вызывает столкновение именования во время выполнения. Избегайте их даже в разовых тренировочных приложениях. Названия коллизий могут быть очень трудно отследить, и вы не хотите тратить время.

    Другая возможная причина этой ошибки: при копировании & amp; вставляя элементы из одного контроллера в другой, Xcode каким-то образом сохраняет эту ссылку на исходный контроллер даже после редактирования & amp; связывая этот элемент в новый контроллер.

    ответ дан TechZen, с репутацией 61227, 21.06.2010
  • 101 рейтинг

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

    ответ дан Steve Rogers, с репутацией 1758, 9.01.2012
  • 87 рейтинг

    У меня была эта ошибка, когда я пытался реализовать пользовательский ViewCell для таблицы. Когда я выделил View controller для XIB и подключился к элементам в CellView, возникла ошибка «этот класс не соответствует значению ключа для кода», как только я удалил их, он избавился от ошибки.

    Удалите соединения на изображении ниже. Delete the connections in inspector when File Owner is highlighted

    Просто убедитесь, что у вас есть только соединения с ячейкой табличного представления. Чтобы проверить, нажмите на ячейку табличного представления и в INSPECTOR ищите свои соединения.

    The connection should be in here when Table View Cell is highlighted

    ответ дан uplearnedu.com, с репутацией 1974, 21.11.2013
  • 61 рейтинг

    Если это приложение только для iPhone, а не универсальное, убедитесь, что следующее поле не заполнено:

    Цели & gt; Резюме & gt; Информация о развертывании iPhone / iPod & gt; Основной интерфейс

    Если указать там xib, он вылетает.

    ответ дан erkanyildiz, с репутацией 10082, 30.06.2012
  • 57 рейтинг

    Эта ошибка указывает, что уже подключенный объект Interface Builder удален / переименован в в источнике его владельца (Владелец файла).

    Удерживая нажатой клавишу «Control», нажмите на владельца файла в Интерфейсном Разработчике, если вы видите восклицательный знак , который необходимо исправить.

    На рисунке ниже вы можете видеть, что «aRemovedView» имеет восклицательный знак справа, потому что я удалил объект представления IBOutlet, когда он уже был подключен в IB.

    enter image description here

    Это дает следующую ошибку: Завершение работы приложения из-за необработанного исключения «NSUnknownKeyException», причина: «[setValue: forUndefinedKey:]: этот класс не соответствует значению ключа для кода aRemovedView.

    ответ дан Tibidabo, с репутацией 19073, 29.03.2013
  • 46 рейтинг

    Иногда это связано с вашим "Наследовать от цели". Это значение должно быть установлено. В приложениях с одной целью вы можете просто выбрать Inherit From Target. Если у вас более одной цели, выберите нужную цель. enter image description here

    ответ дан mrabins, с репутацией 191, 5.04.2017
  • 40 рейтинг

    У меня была та же проблема, и хотя ответ TechZen действительно может быть удивительным, мне было трудно применить его к моей ситуации.

    В конце концов я решил проблему, связав метку через контроллер, указанный в Объекты (выделено на рисунке ниже), а не через владельца файла .

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

    enter image description here

    ответ дан Eric Brotto, с репутацией 35063, 28.09.2011
  • 33 рейтинг

    в моем случае это была ошибка в исходном коде раскадровки, выполните следующие действия:

    1. сначала откройте свою раскадровку как исходный код
    2. поиск
    3. удалите нежелательные соединения

    Например:

    
        
        
        
    
    

    Как видите, это связи между именами переменных вашего кода и тегами xml макета раскадровки;)

    ответ дан Fareed Alnamrouti, с репутацией 19028, 22.07.2014
  • 29 рейтинг

    Это происходило со мной только при отладке на устройстве (iPhone). Симулятор iOS работал нормально. Создание «Product-gt; Clean» из Xcode, похоже, решило проблему, но я понятия не имею, почему.

    ответ дан Maj, с репутацией 341, 14.10.2013
  • 27 рейтинг
    1. Вам нужно указать IBOutlet только один раз, а метка IBOutlet - ваш ивар не нужен.
    2. Вы инстанцируете свой NIB, используя свой UIViewController? В какой-то момент вы должны звонить [SecondView initWithNibName:@"yourNibName" bundle:nil];
    ответ дан kubi, с репутацией 32711, 21.06.2010
  • 27 рейтинг

    enter image description here enter image description here

    Мое исправление было похоже на Gerard Grundy's. При создании пользовательского UITableViewCell с использованием XIB я по ошибке применил имя пользовательского класса к владельцу файла, а не к UITableViewCell. Применение класса к UITableViewCell на холсте и подключение к нему моих свойств IBOutlet решило проблему.

    ответ дан ashack, с репутацией 827, 6.03.2014
  • 21 рейтинг

    У меня было точно такое же сообщение об ошибке и спасибо (! ! ) Кира от http: // www. idev101. com Я смог решить эту проблему. Я нашел ее сайт только после того, как погуглил и сложил все эти темы. Сейчас я публикую здесь следующую статью, которая относится к StackOverFlow и имеет ту же проблему, с которой я столкнулся, поскольку этот человек, скорее всего, перейдет в эту ветку через Google.

    Я понял, что ошибочно сделал это:

    UIViewController *deviceViewController = [[UIViewController alloc] initWithNibName:@"DeviceViewController" bundle:nil];
    

    Вместо ЭТОГО:

    DeviceViewController *deviceViewController = [[DeviceViewController alloc] initWithNibName:@"DeviceViewController" bundle:nil];
    

    Где

    DeviceViewController
    

    Было имя моего класса, также известный как

    DeviceViewController.h 
    DeviceViewController.m
    

    Вам придется

    "import DeviceViewController.h"
    

    в вашей реализации (. m File), куда вы хотите позвонить e. г. другой UIViewController.

    Я абсолютно не сожалею, если я только излагаю очевидное для начинающих, таких как я, и могу получить голоса, поскольку это не совсем связано с вопросом, но я искал 4 (? ! ? ) прямо сейчас для ответа на эти сообщения об ошибке. Если бы я мог сэкономить это одному или двум людям, это было бы здорово :)

    PS: Для тех, кто интересуется продолжением кода для загрузки другого UIViewController:

        [self presentViewController:deviceViewController animated:YES completion:nil];
    
    ответ дан Yannis, с репутацией 176, 31.08.2013
  • 20 рейтинг

    Это может происходить из-за того, что вы перетаскивали элемент управления и создали розетку или действие и забыли удалить его. Даже если вы удалили код или даже сделали достаточно cmd + Z, вам нужно зайти в инспектор соединений вашей раскадровки и посмотреть, все ли созданное вами действие или розетка все еще здесь или нет.

    ответ дан Ilansky Naftali, с репутацией 20, 12.08.2017
  • 15 рейтинг

    Просматривая другие ответы, кажется, что есть много вещей, которые могут вызвать эту ошибку. Вот еще один.

    Если вам

    • есть пользовательский вид
    • добавил свойство @IBInspectable
    • , а затем удалил его

    Тогда вы также можете получить ошибку, аналогичную

    Не удалось установить (xxx) проверенное пользователем определенное свойство в [Your Custom Посмотреть] . , , : этот класс не соответствует значению ключа для ключа [Ххх].

    Решение состоит в том, чтобы удалить старое свойство.

    enter image description here

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

    ответ дан Suragch, с репутацией 180669, 22.08.2015
  • 15 рейтинг

    Это происходит со мной, когда мой контроллер представления изначально имел. xib файл, но теперь создается программно.

    Даже если я удалил. XIB-файл из этого проекта. Пользователи iPhone / iPad могут содержать. XIB-файлы для этого viewcontroller.

    Попытка загрузить. XIB-файл обычно вызывает этот сбой:

    Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[ setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key welcomeLabel.'
    

    Решение при его программном создании может быть таким:

    -(void)loadView {
        // Ensure that we don't load an .xib file for this viewcontroller
        self.view = [UIView new];
    }
    
    ответ дан neoneye, с репутацией 29516, 27.06.2013
  • 12 рейтинг

    Свойство «Модуль» View Controller в Identity Inspector может отличаться от ожидаемого. Также убедитесь, что новые классы добавлены в ваш целевой список.

    ответ дан ercu, с репутацией 2260, 20.09.2015
  • 10 рейтинг

    У меня была похожая проблема для проекта, в котором есть две цели (с собственным MainWindow XIB). Основная проблема, которая вызвала у меня эту ошибку, заключалась в том, что класс UIViewController не был включен в список ресурсов второго проекта. Я. е. конструктор интерфейса позволил мне указать это в MainWindow. XIB, но во время выполнения система не может найти класс.

    I. е. cmd-клик по рассматриваемому классу UIViewController и дважды проверьте, что он включен на вкладке «Цели».

    ответ дан David Carney, с репутацией 1540, 6.01.2011
  • 8 рейтинг

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

    ответ дан MehrozKarim, с репутацией 135, 11.07.2012
  • 8 рейтинг

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

    1- Убедитесь, что у вас есть. m файл в списке - & gt; Проект - Этапы сборки - Скомпилировать источники
    2- После этого перейдите в конструктор интерфейса (возможно, это ошибка только с IB) и отмените привязку всех свойств, меток, изображений и т. Д. , , Тогда перепишите все. Я понял, что удалил атрибут, но он все еще был связан в IB.

    Надеюсь, что это работает для некоторых.

    ответ дан kubilay, с репутацией 2502, 23.10.2012
  • 7 рейтинг

    Эта ошибка - что-то еще!

    Вот как я это исправил. Я использую XCode версии 6. 1. 1 и используя swift. Я получал эту ошибку каждый раз, когда мое приложение пыталось выполнить переход, чтобы перейти к следующему экрану. Вот что я сделал.

    1. Проверено, что кнопка была подключена к нужному действию. (Это не было проблемой, но все же хорошо проверить)
    2. Убедитесь, что у кнопки нет дополнительных действий или розеток, которые вы, возможно, создали по ошибке. (Это не было проблемой, но все же хорошо проверить)
    3. Проверьте журналы и убедитесь, что все кнопки на СЛЕДУЮЩЕМ ЭКРАНЕ имеют правильные действия, и если есть какие-либо переходы, убедитесь, что у них есть уникальный идентификатор. (Это была проблема)
      • Один из сегов не имел уникального идентификатора
      • Одна из кнопок имела действие и два выхода, которые я создал по ошибке.
      • Удалите все дополнительные розетки и убедитесь, что переходы к следующему экрану имеют уникальные идентификаторы.

    Cheers,

    ответ дан Ronaldoh1, с репутацией 2287, 22.02.2015
  • 7 рейтинг

    «этот класс не соответствует значению ключа для ключа» Я знаю, что немного поздно, но мой ответ другой, поэтому я думаю, что это нужно опубликовать, я неправильно нажимал на второй контроллер, вот пример

    Неправильный способ нажать контроллер

    UIViewController* controller = [[UIViewController
     alloc]initWithNibName:@"TempViewController" bundle:nil];
             [self.navigationController pushViewController:controller animated:true];
    

    Правильный путь

    TempViewController* controller = [[TempViewController
     alloc]initWithNibName:@"TempViewController" bundle:nil];
             [self.navigationController pushViewController:controller animated:true];
    

    Я не нашел ни одного ответа, подобного приведенному выше, поэтому, возможно, он может помочь кому-то, имеющему такую ​​же проблему

    ответ дан Emy Stats, с репутацией 314, 8.04.2016
  • 7 рейтинг

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

    Я работал над кодированием веб-сервиса в Swift 2. Я построил все необходимые прокси-объекты и заглушки. Проходя по возвращенному XML, я динамически создавал экземпляры своих объектов, которые все пришли из NSObject и использовали на них setValue:forKey. Каждый раз, когда setValue:forKey пытался установить свойство, оно взрывалось с этой ошибкой.

    У меня был оператор switch для каждого типа, с которым я имел дело (например, г. Bool?, CShort?, String?) и для каждого узла XML я прошел и проверил, какой тип был у объекта, а затем преобразовал значение в этот тип и попытался установить его с setValue:forKey.

    В конце концов я начал комментировать все эти строки setValue:forKey и обнаружил, что мой случай оператора switch default работал для String?.

    Я наконец понял, что вы не можете использовать дополнительные типы swift с setValue:forKey, если у них нет прямого сопоставления с типом Objective C, таким как String? или NSNumber?. В итоге я изменил все типы CShort? на NSNumber?, так как это имеет прямое сопоставление. Для Bool? в моем случае было нормально использовать Bool и инициализировать его false. Другие могут не иметь такой роскоши.

    В любом случае, какая головная боль, которая была так надеялась, помогает кому-то еще, у кого есть подобная проблема и продолжает перенаправляться на этот вопрос и говорить себе: «Я ничего не делаю в интерфейсе! ! ».

    И, наконец, еще раз повторим, что Key-Value Coding не работает с опциями. Ниже я в конечном итоге нашел где-то, но я забыл, где так, чтобы кто бы ни опубликовал это, я извиняюсь и буду благодарен, если я вспомнил, где я нашел это, но это спасло мне жизнь:

    Нельзя использовать KVC для необязательного свойства Int, поскольку KVC - это Какао / Objective-C и Objective-C не могут видеть необязательный Int - это не соединен с Objective-C. Objective-C может видеть только те типы, которые соединен с Objective-C:

    типы классов, производные от NSObject

    типы классов, предоставляемые с помощью @objc

    Свифт структуры, которые соединены мостом

    ответ дан AtheistP3ace, с репутацией 7840, 26.01.2016
  • 7 рейтинг

    Еще одна проблема «не соответствует», которую я обнаружил, когда по какой-то причине мне удалось получить две копии класса.

    Я добавил ключи к неправильной копии. Интерфейсный Разработчик все еще видел ключи и позволял мне подключаться к ним, но во время выполнения он использовал другую копию класса, у которой не было новых ключей.

    Чтобы найти, какая была «правильная» копия, я использовал cmd-щелчок XCode по имени класса в другом месте, чтобы перейти к правильной копии, затем я уничтожил неиспользуемые копии (сначала перенеся мои правки из неиспользованной копии) ,

    Мораль истории: дубликаты файлов классов плохие.

    ответ дан Jason, с репутацией 1063, 21.08.2010
  • 6 рейтинг

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

    Чтобы исправить это:

    1. Выделите. м файл.
    2. На правой панели выберите инспектор файлов.
    3. В разделе «Целевое членство» убедитесь, что выбран соответствующий целевой объект сборки.

    Надеюсь, это поможет кому-то там.

    ответ дан Mike M. Lin, с репутацией 7487, 24.09.2014
  • 5 рейтинг

    В моем случае. У меня не было пропущенных розеток в xib-файлах после слияния.

    Shift + Command + K

    решил мою проблему. Я очистил свой проект и восстановил.

    ответ дан Malder, с репутацией 1582, 2.10.2015
  • 5 рейтинг

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

    . 1 Измените класс на UIViewController

    . 2 Отключите все розетки (теперь все они будут иметь желтый предупреждающий треугольник) - может быть достаточно просто отключить проблемные розетки.

    . 3 Выполните все стандартные шаги - ⌘ ⌘K, удалите производные данные (молитвенные маты, тревожные бусы)

    . 4 Запустите приложение - перейдите на проблемную сцену.

    . 5 Убейте приложение, вернитесь в Интерфейсный Разработчик, измените класс на свое имя класса.

    . 6 Подключите ваши розетки.

    Запустите приложение & amp; это, как правило, прояснит вопросы соответствия ключ-значение.

    ответ дан Damo, с репутацией 10891, 7.07.2016
  • 4 рейтинг

    В моем случае это было вызвано неправильной ссылкой на Nib:

    BMTester *viewController = [[BMTester alloc] initWithNibName:@"WrongNibName" bundle:nil];
    
    ответ дан wspruijt, с репутацией 749, 14.05.2014
  • 3 рейтинг

    У меня была такая же проблема. Я создал tableviewCell в файле XIB и получал такую ​​ошибку. Моя проблема заключалась в том, что я определил класс «Владелец файла» в качестве моего контроллера представления ячейки. Я просто вынул его и установил класс ячейки (в файле xib щелкните границу ячейки, перейдите на третью вкладку на правой панели и там, где написано, что класс выбрал ваш контроллер представления).

    Также попробуйте очистить ваш код.

    ответ дан pedrotorres, с репутацией 531, 10.09.2012
  • 3 рейтинг

    У меня такая же проблема. Я сделал сброс симулятора. Снятие и добавление кнопки управления. и наконец сделал чистку. :) Благодаря переполнению стека. Некоторые, как мой код стал нормальным и начал работать.

    ответ дан priya, с репутацией 130, 1.02.2012
  • 3 рейтинг

    У вас могут быть выходы для элемента пользовательского интерфейса, но нет свойства IBOutlet в. h Файл

    Для всех элементов пользовательского интерфейса в пунктах Атрибут подключения и его соответствующего свойства в. h заголовочный файл.

    Может отсутствовать одна или несколько записей свойств в. ч файл.

    ответ дан Avinash Jadhav, с репутацией 341, 26.02.2016
  • 3 рейтинг

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

    ответ дан Symmetric, с репутацией 3193, 28.10.2011
  • 2 рейтинг

    Проверьте, есть ли у вас ошибочные ссылочные выходы, выбрав поврежденный объект в интерфейсе раскадровки / xib и открыв инспектор соединений (View-> Utilities-> Show Inspector). Если вы удалите нежелательные соединения, и вы должны быть в порядке.

    ответ дан Jorge Rodrigues dos Santos, с репутацией 910, 22.01.2013
  • 2 рейтинг

    У меня была такая же проблема. Это произошло с моим проектом, потому что я изменил название своего продукта, но в конструкторе интерфейсов у меня было старое имя Module, это приводит к сбою, поэтому убедитесь, что все имя модуля xib также было изменено или нет.

    ответ дан Jyotsna, с репутацией 1199, 23.02.2016
  • 2 рейтинг

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

    В Project Navigator,

    Найдите файл Nib (xib). Щелкните правой кнопкой мыши и просмотрите источник. Я удалил следующий полный раздел

    
         DeleteLabel    20 
    
    ответ дан Apple Pirate, с репутацией 64, 17.04.2013
  • 2 рейтинг

    Возможно, вам придется удалить розетку, воссоздать ее, нарисовав форму IB для. H файл.

    ответ дан IsPha, с репутацией 207, 3.07.2016
  • 2 рейтинг

    Это также происходит со мной, когда на метку пользовательского интерфейса или другой элемент пользовательского интерфейса ссылаются две переменные в классе контроллера представления, и я удаляю одну из переменных.

    ответ дан sysuser, с репутацией 476, 4.07.2015
  • 1 рейтинг

    У меня было это, когда я связал UIView с раскадровкой и подключил IBOutlet, например:

    @property (strong, nonatomic) IBOutlet UIView *someView
    

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

    ответ дан Fonix, с репутацией 8464, 17.05.2016
  • 1 рейтинг

    В моем случае

    [[NSBundle mainBundle] loadNibNamed:@"NameOfTheSubviewNibFile" owner:self options:nil]
    

    было причиной.

    , заменив это на initWithNibName , решено.

    ответ дан Deve Tester, с репутацией 71, 14.04.2014
  • 1 рейтинг

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

    ответ дан IanS, с репутацией 673, 20.06.2016
  • 1 рейтинг

    Еще одна причина этой ситуации состоит в том, что вы объявляете это свойство реализованным как @dynamic, но класс не может найти его в родительском классе.

    ответ дан zakhej, с репутацией 1119, 23.11.2012
  • 1 рейтинг

    Это может означать, что вы пытаетесь использовать дескриптор сортировки без atsign в начале. Как в:

    [array valueForKeyPath:@"distinctUnionOfObjects.self"]

    Что должно быть на самом деле:

    [array valueForKeyPath:@"@distinctUnionOfObjects.self"]

    ответ дан CommaToast, с репутацией 4711, 20.06.2016
  • 1 рейтинг

    Это уже случалось со мной дважды.

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

    ответ дан Rafael Ruiz Muñoz, с репутацией 2240, 27.06.2015
  • 1 рейтинг

    У меня была та же проблема, и причина была в том, что я указал модуль в Интерфейсном Разработчике (вместо того, чтобы оставить его пустым). Итак, когда я использовал другой модуль, чем тот, который я установил, приложение зависало: S. , , надеюсь, что это поможет кому-то еще, так как моя проблема была не из-за сломанной или устаревшей розетки!

    ответ дан Chris Allinson, с репутацией 1053, 6.02.2017
  • 1 рейтинг

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

    В этом нет проблем. Вам нужно только добавить точку входа в раскадровку. I. е. проверьте is initial View Controller, на котором когда-либо просматриваете контроллер, который вам нравится. В противном случае это будет серая сцена и вы получите ошибку.

    enter image description here

    ответ дан Honey, с репутацией 9054, 31.03.2016
  • 1 рейтинг

    Представлена ​​та же проблема. Моим решением было поставить правильное значение раскадровки в раскрывающемся списке Основной раскадровки. Я переименовал mainstoryboard. Раскадровка, но не сбросить информацию о развертывании.

    ответ дан steepLearningCurve, с репутацией 59, 2.11.2012
  • 1 рейтинг

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

    ответ дан IanS, с репутацией 673, 20.06.2016
  • 1 рейтинг

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

    @objc (XXXViewController) class XXXViewController

    ответ дан user1760527, с репутацией 918, 27.09.2015
  • 1 рейтинг

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

    @objc(MyViewController) class MyViewController
    
    ответ дан user1760527, с репутацией 918, 4.04.2017
  • 0 рейтинг

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

    ответ дан JackieLam, с репутацией 186, 4.09.2013