2010-10-27 3 views
7

Как вы используете NSCoder для кодирования и декодирования пользовательских типов?NSCoder и настраиваемые типы

Например, как бы вы использовать NSCoder с экземпляром «STATE», где:

typedef enum { ON, OFF } STATE; 

ответ

13

Вы можете рассматривать их как целые числа, как они неявно присваиваются целые значения:

- (void) encodeWithCoder: (NSCoder *)coder { 
    ... 
    [coder encodeInt:type forKey:@"state"]; 
} 

- (id) initWithCoder: (NSCoder *)coder { 
    ... 
    state = [coder decodeIntForKey:@"state"]; 
} 
+1

Кроме того, что изменение внутреннего порядка в перечислении приведет к нарушению кодирования. – Kenneth

+0

И какой класс вы используете эти методы? Это типы, а не объекты ... 'NSKeyedArchiver'? –

+0

Для поддержки кодирования и декодирования экземпляров класс должен принять протокол NSCoding и реализовать его методы. Объект, кодируемый или декодированный, отвечает за кодирование и декодирование его состояния. – Ushox

Смежные вопросы