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, поэтому я не уверен, почему я получаю сообщение об ошибке...
Спасибо
Ответы
Ответ 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, выбрал инспектор удостоверений и набрал новый именованный класс в пользовательском классе → тег класса.
Ошибка приложения устранена.