Попытка использовать NSCoder приводит к сбою приложения при запуске

У меня есть некоторые детали, хранящиеся внутри NSDictionary. Я использую представление Master-Detail на iPad, и после добавления метода initWithCoder мое приложение аварийно завершает работу при запуске, и я не знаю, как заставить его работать.

Причина, по которой я хочу использовать NSCoder, заключается в том, чтобы хранить данные моего пользователя и иметь возможность показать их, когда он снова запустит приложение. NSUserDefaults невозможен, потому что я храню UITextFields и UISegmentedControls внутри словаря для простоты обработки данных.

- (id)initWithCoder:(NSCoder *)aDecoder {
    if (self = [super init]) {
        personInfo = [aDecoder decodeObjectForKey:myString];
    }

    return self;
}

- (void)encodeWithCoder:(NSCoder *)aCoder {
   [aCoder encodeObject:personInfo forKey:myString];
}

Может кто-нибудь, пожалуйста, скажите мне, как его правильно использовать?


person Sorin Cioban    schedule 13.05.2012    source источник
comment
Есть ли смысл в этом другом вопросе? stackoverflow.com/ вопросы/3943801/   -  person Gareth McCaughan    schedule 14.05.2012
comment
Немного помогло - больше не вылетает. Подскажите, пожалуйста, как сохранить эти данные после кодирования?   -  person Sorin Cioban    schedule 14.05.2012
comment
Возможно нет; Я ничего не знаю о какао :-). Но если ваш код больше не дает сбоев, но вы все еще недовольны тем, что он делает, вам, вероятно, следует либо изменить вопрос, чтобы отразить новое состояние мира, либо опубликовать новый. (Если то, что было изначально неправильно, теперь исправлено, вы можете опубликовать ответ, объясняющий, в чем была проблема и как вы ее исправили, и принять свой собственный ответ. Это может быть полезно для будущих читателей.)   -  person Gareth McCaughan    schedule 14.05.2012


Ответы (1)


Я исправил это, просто сказав

self = [super initWithCoder:aDecoder]

вместо того, чтобы просто

self = [super init]
person Sorin Cioban    schedule 13.05.2012