2010-10-27 12 views
7

Come utilizzare NSCoder per codificare e decodificare i tipi personalizzati?NSCoder e tipi personalizzati

Per esempio, come si usa NSCoder con un'istanza di "STATE" dove:

typedef enum { ON, OFF } STATE; 

risposta

13

È possibile trattarli come numeri interi in cui sono implicitamente assegnati valori interi:

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

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

parte il fatto che un cambiamento nell'ordine internamente all'enum romperebbe la codifica. – Kenneth

+0

E quale classe metti questi metodi? Sono tipi, non oggetti ... 'NSKeyedArchiver'? –

+0

Per supportare la codifica e la decodifica delle istanze, una classe deve adottare il protocollo NSCoding e implementarne i metodi. Un oggetto codificato o decodificato è responsabile della codifica e della decodifica del suo stato. – Ushox

Problemi correlati