#objective-c #nscoding
#objective-c #nscoding
Вопрос:
Я хочу: количество производных классов, наследуемых от базы, которая соответствует NSCoding
.
Когда я декодирую, нужно ли мне «что-то делать», чтобы позаботиться о создании экземпляра правильного производного класса, или NSCoding
обрабатывает все это за меня?
Ответ №1:
Вам не нужно что-то делать для NSCoding, чтобы создать экземпляр правильного подкласса для вас. Он делает это автоматически.
Если вашему базовому классу необходимо закодировать или декодировать себя, не забудьте, что вам нужно вызвать super в ваших реализациях:
- (void)encodeWithCoder:(NSCoder *)coder
{
[super encodeWithCoder:coder];
// And do your own encoding.
}
и
- (instancetype)initWithCoder:(NSCoder *)aDecoder
{
if(self = [super initWithCoder: aDecoder])
{
// Do your own decoding here.
}
return self;
}
Комментарии:
1. 🙂 Это «да» или «нет»?
2. Если вы не хотите перезаписывать или добавлять какие-то дополнительные свойства для сохранения в архиваторе, NSCoding сделает все это за вас
3. Круто, спасибо. Я отправлю редактирование, чтобы обобщить это, или вы бы предпочли?