Ошибка: завершение работы приложения из-за необработанного исключения «NSUnknownKeyException», причина: «[<UIApplication 0x6887a30> setValue: forUndefinedKey:] - PullRequest
4 голосов
/ 08 марта 2012

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

Итак, у меня естьпытался сказать то, что другие люди говорили с похожими проблемами.Я попытался избавиться от всех упоминаний ландшафтного представления в проекте, включая Соединения в владельце файла в ViewController_iPhone.xib, а затем я начал с создания выходов в суперклассе ViewController (поскольку я хочу использовать landscapeView и PortraitView for iPadтакже) затем я устанавливаю подключения в ViewController_iPhone.xib и ViewController_iPad.xib к UIView с именем Landscape в каждом соответственно, и я все еще получаю эту ошибку.

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

РЕДАКТИРОВАТЬ: Вот ссылка на всех делегатов моего приложения h и m и main.m: Я получаю, что Приложения должны иметь контроллер корневого представления в конце приложенияошибка запуска

РЕДАКТИРОВАТЬ 2: Поэтому я также попытался сделать landscapeView свойством ViewController и создал метод setter в ViewController.m, но у него все еще остается та же проблема.

Ответы [ 4 ]

9 голосов
/ 30 сентября 2013

Мне пришлось удалить NIB или XIB (или что бы то ни было на этой итерации) для основного интерфейса.

Было бы неплохо, если бы Apple полностью проверила сломанное программное обеспечение, прежде чем показывать его ничего не подозревающей публике. Они могли бы решить проблему любым количеством способов; но вместо этого они выбрали сбой во время выполнения и скрытое [бессмысленное] сообщение об ошибке.

enter image description here

9 голосов
/ 09 марта 2012

Я нашел наиболее распространенное место, где возникает эта ошибка, когда вы создаете экземпляр представления из xib из класса, который не является владельцем xib.

Я имею в виду, что вы можете вызыватьчто-то похожее на это:

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

Вы изменяете owner, поэтому вы должны быть уверены, что класс, на который ссылается self, имеет все свойства IBOutlet, необходимые для MyView.Обычно это делается в Интерфейсном Разработчике, но в этом случае вы устанавливаете своего владельца программно, что означает, что вы не можете устанавливать соединения в IB.Когда IBOutlets отсутствуют, приложение пытается установить эти соединения и завершается неудачей, выдавая ошибку, которую вы видите.

Мой совет (не зная больше информации, чем вы дали), это проверитьПосмотрите, сделали ли вы этот звонок, не имея надлежащих IBOutlets.

1 голос
/ 22 мая 2017

Две основные причины следуют

  1. Ваш iboutlet может сломаться, пожалуйста, проверьте раскадровку или IB.
  2. если вы не выбрали модуль для пользовательского класса, загляните в раскадровку.
0 голосов
/ 06 декабря 2012

Я обнаружил, что я удалил WebView в viewcontroller.h, но не удалил xib-файл, указывающий на этот WebView!

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