Вопрос по xcode, debugging, ios, compiler-errors – Как решить «NSUnknownKeyException»… setValue: forUndefinedKey:]:… не соответствует кодировке значения ключа [дубликат]

29

Хорошо, я постараюсь сделать это как можно более кратким. Я хотел UIToolbar над моей клавиатурой, и мне потребовалось некоторое время, чтобы понять это, и я в конечном итоге сделал, но когда я попытался добавить функцию к кнопкамprevious * следующий * иdone моя программа скоро не скомпилируется.

Полное сообщение об ошибке можно увидеть здесь:

2012-06-20 05:36:55.276 KegCop[79460:fb03] * Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[ setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key done.'

* First throw call stack: (0x134a022 0x1733cd6 0x1349ee1 0xd31022 0xca2f6b 0xca2edb 0xcbdd50 0x5a571a 0x134bdea 0x12b57f1 0x5a426e 0x7adeef 0x7ae03e 0x382d7a 0x382ff8 0x38217f 0x391183 0x391c38 0x385634 0x1f84ef5 0x131e195 0x1282ff2 0x12818da 0x1280d84 0x1280c9b 0x381c65 0x383626 0x2a8d 0x29f5 0x1) terminate called throwing an exception(lldb)

@Abizern предложил мне прочитатьApple Doc на Руководство по кодированию значения ключа, В любом случае, это слишком поздно или очень рано, как бы вы на это ни смотрели. Обновленный проект можно найти здесь:https://github.com/ipatch/KegCop

Просто скачайте zip, попробуйте и соберите, и вы поймете, о чем я говорю. Ошибка, вероятно, лежит где-то вViewControllerWelcome.m файл.

ценим предложения. ipatch
... и ваши магазины jrturton
Включить исключения точек останова. Это скажет вам, где лежит код проблемы. Вы не можете ожидать, что люди загрузят, соберут и исправят ошибки всего вашего проекта. Где-то у вас есть слово "готово" используется в качестве имени метода или ключа, и это не соответствует никому в вашем классе. Я бы начал с рассмотрения ваших действий как связанных в конструкторе интерфейсов. jrturton

Ваш Ответ

6   ответов
30

Самый простой способ проверить это - Ctrl + клик на вашем контроллере в режиме раскадровки и найти что-то в появившемся всплывающем окне, рядом с которым стоит желтая предупреждающая отметка. Просто удалите его, нажав (x) рядом с названием розетки.

-2

Для моей ситуации я добавил-all_load в & quot; Другие флаги компоновщика & quot; чтобы Xcode не удалил двоичный код моей библиотеки.

0

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

SOLUTION: closing xcode сделал трюк, такжеcleaning/deepCleaning the project возможно, помогло.

также убедитесь, что ваши выходы свойств находятся внутри @interface с именем класса или в его суперклассе
61

ViewControllerWelcome объект. Наиболее вероятным источником этой ошибки является то, что что-то связано с действием или выходом, называемымdone этого не существует в коде для этого класса.

Да, это было причиной для меня. Спасибо
Помог мне найти проблему. Я переименовал свойство, которое было торговой точкой и нуждалось в обновлении раскадровки, чтобы соответствовать.
да .. Это ответ, скорее всего, вы могли подключить что-то в вашем Viecontroller, который удален из .h и .m
Благодарю . , , , ,
@Phillip Mills, не могли бы вы взглянуть на этот другой вопрос, касающийсяNS[whatever]UsageDescription ключи?stackoverflow.com/q/53710674/4124574, Я полагаю, что вы опубликовали нечто подобное на форуме разработчиков Apple здесь (forums.developer.apple.com/message/196093#196093) и мне действительно нужен указатель в правильном направлении.
3

Если вы используете раскадровку, просто нажмите на каждый ViewController и выберите инспектор соединений из них. Проверьте, нет ли на выходе какого-либо восклицательного знака (для потерянных соединений).

Удалите их правильно. Затем запустите ваш проект снова.

0

Я столкнулся с той же проблемой, я использовал xib для viewcontroller, но затем я удалил его. Однако в коде соединение все еще получает соединения от удаленного XIB. Таким образом, способ обойти это создать новую XIB для viewcontroller. Тогда проблема решена.

Похожие вопросы