Ошибка при запуске проекта в xCode 5 после подключения MessageUI?

Обучаюсь разработке под iOs по книге. Делал проект, в какой-то момент понадобилось подключить MessageUI и проект перестал запускаться. Собирается успешно, но не запускается. MessageUI отключаю и опять все хорошо.

При запуске такая ошибка:
2013-11-19 23:34:10.464 UIPickerViewExample[28419:70b] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[ setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key myPicker.

В чем может быть дело?

Проект можно посмотреть здесь: https://github.com/pchelnikov/UIPickerViewCrashApp
  • Вопрос задан
  • 3128 просмотров
Решения вопроса 1
Flanker_4
@Flanker_4
Вы не поверите!
Банальное переименовывание ViewController'a с MPViewController в, к примеру, BBViewController (контекстное меню на объявлении класса, Refactoring, Rename)
решает проблему. Почему? не знаю?
Доброжо пожаловать в суровый мир objective-c
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
gooddy
@gooddy
У тебя в storyboard висит привязка Picker к свойству, которое ты закомментил в контроллере, следовательно при "распаковке" контроллера оттуда и попытке присвоить этой переменной этот объект пикера, ты получаешь эту ошибку. Вот единственное странно, при каких обстоятельствах это вылазит. В общем правило такое, что никаких левых/мёртвых связей не должно торчать в storyboard/xib. Вот в правой панельке myPicker просто удали http://d.pr/i/7TVD
Ответ написан
alexyat
@alexyat
iOS Developer
В комментарии тег кода не работает, поэтому напишу тут и удалить комментарий нельзя (
переиспользовать код, разновидностей кнопок в одном проекте 1-3 вот и делаете класс у которого статические методы строят кнопки, по нескольким параметрам... CGRect и допустим title и просто кладете их сразу на нужный вам вью и везде вызов в 1 строку этой статической функции Например вот так:
+(UIButton*)greenButtonWithObject:(id)object andRect:(CGRect)rect fontSize:(float)size
{
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    UIImage *stretchBG = [[UIImage imageNamed:@"greenbutton.png"]
                          stretchableImageWithLeftCapWidth:10.0 topCapHeight:10.0];
    button.frame = rect;
    if([object isKindOfClass:[UIImage class]])
        [button setImage:object forState:UIControlStateNormal];
    else
    {
        [button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
        [button.titleLabel setFont:[UIFont fontWithName:@"HelveticaNeue-Bold" size:size]];
        [button setTitle:object forState:UIControlStateNormal];
    }
    [button setBackgroundImage:stretchBG forState:UIControlStateNormal];
    return button;
}
Ответ написан
Комментировать
mix2000
@mix2000 Автор вопроса
Похоже, это все же глюк xCode. Как ни пытался, оно не заработало. В какой-то момент даже перестал вызываться метод viewDidLoad.

Пообщался с товарищем, который давно занимается разработкой, говорит, что использует IB только для Core Data, потому что, говорит, тупо крэшится приложение при использовании IB. Видимо, у меня такая же ситуация. :-)

Переписал приложение с использованием программного пикера и все стало ок.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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