Подтвердить что ты не робот

SetValue: forUndefinedKey]:

FinalViewWithSending *newView = [[FinalViewWithSending alloc]initWithNibName:@"FinalViewWithSending" bundle:nil];
newView.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:newView animated:YES]; //it crashes here with a thread 1 error, SIGABRT error..

В нем говорится:

"Terminating app due to uncaught exception 'NSUnknownKeyException', 
reason: '[<FinalViewWithSending 0x1bef70> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key loginButton.'"

Нет переменной, называемой loginButton, поэтому я не уверен, почему я получаю сообщение об ошибке...

Спасибо

4b9b3361

Ответ 1

Вы получаете сообщение об ошибке , потому что нет свойства loginButton. Проверьте файл .xib. Существует почти наверняка плохая ссылка на объект FinalViewWithSending (вероятно, File Owner), который указывает loginButton, даже если он не существует в коде класса.

Ответ 2

Филлип Миллс прав.

Ответ здесь для любого поиска - это отредактировать раскадровку и удалить любую ссылку на указанный ключ undefined. Вы должны отредактировать файл раскадровки во внешнем редакторе: щелкните правой кнопкой мыши на списке раскадровки в иерархии, а затем нажмите "показать в поиске" или что у вас есть. Откройте в текстовом редакторе, удалите указанные ссылки, выполнив поиск, сохранение и возврат в Xcode. Больше проблем.

Это происходит, когда вы неправильно удаляете что-либо из контроллера представления.

Ответ 3

Соглашаясь здесь - Филлип Миллс прав.

Кто-то упомянул об открытии раскадровки в текстовом редакторе - это не обязательно.

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

Ответ 4

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

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

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

Чтобы найти и удалить их, View-> Утилиты-> Показать инспектора подключений

Затем нажмите различные кнопки, которые у вас есть, и нажмите x, чтобы удалить плохие соединения.

enter image description here

Ответ 5

Если у вас есть какие-либо локализации, найдите плохие ссылки во всех раскадровках (разверните раскадровку, чтобы найти локализованные раскадровки).

Это была моя ситуация. Я искал плохие ссылки в одной раскадровке, и они были в локализованной.

Ответ 6

У меня была та же проблема:

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

Проверьте соединения объектов в представлении, к которому вы переходите.

Ответ 7

Вы можете попробовать, как я исправить мою проблему setValue:forUndefinedKey:]:.

http://i.stack.imgur.com/PDjub.png

Ответ 8

Вы можете использовать связанные объекты, чтобы избежать подкласса. Что касается setValue: forKey: и setValue: forUndefinedKey:, загляните в файл заголовка (NSKeyValueCoding.h) для деталей.

Согласно вашему описанию, Найдите newView в своем построителе интерфейса и щелкните его правой кнопкой мыши, вы увидите что-то вроде loginButton, который является ненормальным.

Ответ 9

Сегодня я работал, и я представил эту ту же ошибку, я использовал ответ Филлипа Миллса, был прав, и у меня было несколько ярлыков в одном ViewController.xib, которым не были назначены ссылки, у меня есть пять плохих ссылок, когда назначенные ссылки, все работает отлично, спасибо ответ Филлип Миллс.

Ответ 10

Перейдите к инспектору соединений вашего xib контроллера представления FinalViewWithSending и удалите ссылку на кнопку входа. После этого он будет работать. Попробуйте...:)

Ответ 11

Возможно, вы ранее создали LoginButton, Cmd + Shift + F и нашли "LoginButton" и удалили реферирующий выход и снова построили.

Ответ 12

This reply might be late relative to the time the question was asked but я just had this issue и я tried all solution posted here but none worked.

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

Во-первых, проблема,: я использовал пользовательский класс ячеек и установил свои соединения, затем все работало нормально с моим приложением, я переименовал свой пользовательский класс ячеек, запустил мое приложение, но потерпел крах с ошибкой setValue: forUndefinedKey:].

Мое решение: щелкнул файл .xib, выбрал инспектор удостоверений и набрал новый именованный класс в пользовательском классе → тег класса. Ошибка приложения устранена.