Что это значит? «NSUnknownKeyException, причина:… этот класс не соответствует значению ключа, кодирующему ключ X» - PullRequest
1109 голосов
/ 21 июня 2010

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

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

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

Ответы [ 66 ]

0 голосов
/ 19 декабря 2012

Эта проблема также возникает, если вы хотите создать небольшое подпредставление в отдельном файле XIB в Интерфейсном Разработчике, а в IB вы задаете ему тот же класс, что и родительское представление.

Если вы потом покажете это так:

UIViewController *vc = [[UIViewController alloc] initWithNibName:@"NameOfTheSubviewNibFile" bundle:nil];
[self.view addSubview:vc.view];

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

  1. В коде родительского представления объявите IBOutlet UIView *mySubview для ссылки на представление в файле пера подпредставления
  2. В файле пера подпредставления подключите владельца файла к представлению и установите для него значение mySubview
  3. показать это, выполнив:
[[NSBundle mainBundle] loadNibNamed:@"NameOfTheSubviewNibFile" owner:self options:nil]
[self.view addSubview:mySubview];

и все будет хорошо!

0 голосов
/ 22 августа 2013

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

При использовании метода "initWithNibName" с неправильным именем xib это также приведет к сбою такого типа.

Такой как вывыберите изменение имени файла xib, а затем foget, чтобы изменить имя, используемое в методе "initWithNibName", на то же имя.

0 голосов
/ 16 февраля 2018

В моем случае я добавил ViewController в раскадровку, но я не назначил ему Storyboard ID в конструкторе. Как только я дал ему удостоверение личности, это сработало.

с использованием Xamarin / Visual Studio 2015.

0 голосов
/ 08 августа 2016

Вы оставили свой объект выбора неподключенным?

lol 54 ответа, и ни один из них не является моим решением. Поговорим об общей ошибке.

В моем случае это было потому, что у меня был объект выбора на моем ВК, и я не установил выход и действие для него.

Я часто не подключаю кнопки и т. Д., Когда просто смотрю, как выглядит макет. Но, кажется, вы не можете сделать это для сборщика.

0 голосов
/ 04 сентября 2013

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

0 голосов
/ 24 сентября 2015

Еще один хитрый случай:

В IB добавлен ViewController в раскадровку, удален его вид и задан пользовательский класс «MyViewController», поэтому представление создается из MyViewController.xib

При указании идентификатора раскадровки тот же «MyViewController» вызывает исключение.

Изменение идентификатора раскадровки на другое имя решает проблему.

...