Ошибка SIGABRT - NSUnknownKeyExeption (SetValue: forUndefinedKey;) - PullRequest
1 голос
/ 05 февраля 2012

я получаю ошибку SIGABRT каждый раз, когда я строю.Я вижу причину ниже:

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

-(IBAction)numberEntered:(id)sender
{ 
    NSNumber *day=[NSString stringWithFormat:@"@%", dayEntry];

    NSLog(@"%@", day);
}

Я предполагаю, что это как-то связано со мной, пытаясь передать неправильное значение в * день, но я не вижу, в чем проблема (без ошибок в xCode).

По сути, все, что я хочу сделать, - это извлечь числовое значение из текстового поля и установить для него переменную (день), чтобы я мог использовать его в расчете.Я добавил NSLog, чтобы обеспечить получение правильных данных из моего текстового поля.

Заранее спасибо!

Ответы [ 4 ]

1 голос
/ 05 февраля 2012

Другая проблема - ваша строка формата и тот факт, что вы присваиваете NSString для NSNumber.

NSNumber *day=[NSString stringWithFormat:@"@%", dayEntry];

Попробуйте изменить его на:

NSString *day=[NSString stringWithFormat:@"%@", dayEntry];

Небольшая разница, посмотрите, можете ли вы ее обнаружить.

0 голосов
/ 05 февраля 2012

Убедитесь, что вы действительно зарегистрировали метод с именем numberEntered: (обратите внимание на двоеточие) в IB. Этот метод отличается от numberEntered (без конечного двоеточия). Ошибка может быть вызвана

  • представление, вызывающее numberEntered (вместо numberEntered:)
  • среда выполнения, пытающаяся разрешить (неопределенный метод) с помощью поиска KVC.

Это может быть вызвано отсутствующим (или неправильным) владельцем файла, соответственно. Пользовательский класс, определенный в файле .xib для вашего элемента управления (намекает Тилль) или простая старая опечатка (пропущенная в конце :).

0 голосов
/ 05 февраля 2012

Убедитесь, что ваша реализация пользовательского класса, реализующая numberEntered: (подкласс UIView / UIViewController / UITextFIeld или еще много чего) фактически выбрана в InterfaceBuilder в Пользовательский класс , Класс .

Ради этого примера я предполагаю, что это класс UIViewController, и вы называете его MyViewController.В этом смысле вам нужно будет ввести это имя под указанным IB при наблюдении «Владельца файла».

Чтобы проверить, действительно ли это была ваша проблема, вы можете добавить что-нибудь в свой метод viewDidLoad, который печатаетчто-то в консоль.Прежде чем вы сможете это сделать, вам нужно удалить этот пользовательский метод из события (так как этот ребенок вызовет исключение).Если что-то не появляется при отображении представления этого viewController, вы знаете, что у вас есть описанная проблема.

См. Это:

enter image description here

0 голосов
/ 05 февраля 2012

попробуйте это:

NSNumber *day = [NSNumber numberWithInt:[dayEntry intValue]];
...