Этот класс не совместим со значением кода - PullRequest
5 голосов
/ 23 июня 2010

Я создал три файла SettingsViewController.h, SettingsViewController.m и SettingsViewController.xib.

Я показываю SwttingsViewController.xib по щелчку ячейки в строке. На xib-файле есть метка и слайдер. Работает нормально. Но после создания соединений используется интерфейс конструктора. Т.е. перетаскивание из розетки redLabel на мою метку в xib-файле я получаю эту ошибку, и приложение закрывается.

'[<UIViewController 0x3d636d0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key redLabel. * * 1006

Ответы [ 5 ]

6 голосов
/ 12 мая 2011

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

Исправлена ​​проблема, зайдя в файл XIB. Щелкните правой кнопкой мыши файл и выберите «Открыть как», а затем «Код источника». Я получил сообщение об ошибке: этот класс не совместим со значением ключа для ключа originalField

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

Я вошел в исходный код, искал originalField и удалил ссылку на него, все исправлено.

3 голосов
/ 23 июня 2010

Похоже, что владелец файла SwttingsViewController.xib имеет неправильный класс.Зайдите в Интерфейсный Разработчик и измените класс Владельца файла на SettingsViewController.См. эту страницу для получения подробной информации о владельце файла и UIViewController.

0 голосов
/ 14 августа 2015

У меня была такая же проблема, когда я сделал .xib для объекта, который подклассов UIView.

Проблема заключалась в следующем: при создании ограничений в раскрывающемся списке «Объект» содержалось 2 значения: «Владелец файла» и имя моего объекта: «Просмотр всплывающего окна».

При выборе «Владелец файла» произойдет сбой, если я добавлю хотя бы одну розетку. Тем не менее, при повторном добавлении всех выходов с моим именем класса: «PopoverView», он будет создан из Nib без ошибок «ошибка, соответствующая кодировке значения ключа».

Смотрите скриншот. enter image description here

Я дважды проверил, правильно ли установлен мой Владелец файла, щелкнув мое представление верхнего уровня в Nib: «PopoverView» и выбрав вкладку «Пользовательский класс», и убедившись, что оно установлено в «PopoverView» , Смотрите скриншот: enter image description here

Так что единственное, что мне помогло, это убедиться, что выбрано мое имя класса «Popover View» Под полем «Object» при создании ограничения, а НЕ «Владелец файла».

0 голосов
/ 30 января 2013

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

Поскольку мы знаем эту ошибкусообщение обычно означает, что у вас есть элемент управления в xib или раскадровке, который связан с несуществующим свойством или действием в источнике.И запоминание каждого @property создает setPropertyName метод установки и propertyName метод получения.Вы можете проверить, что каждый элемент управления в xib в инспекторе соединений по-прежнему подключен к действительному IBOutlet или IBAction.

Чтобы избежать этой проблемы, используйте опцию меню refactor-> rename, и Xcode обеспечит обновление обеих записей.

0 голосов
/ 21 мая 2012

Спасибо, Гарольд!Ваш ответ привел меня, чтобы решить мой!Я удалил переменную NSString, которую перо не очистило должным образом.Самый быстрый способ для меня был удалить перо и сделать другой, который решил это.Спасибо, Газ.

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