2010-10-27 4 views
7

Comment utiliser NSCoder pour encoder et décoder des types personnalisés?NSCoder et types personnalisés

Par exemple, comment voulez-vous utiliser NSCoder avec une instance de « STATE » où:

typedef enum { ON, OFF } STATE; 

Répondre

13

Vous pouvez les traiter comme des entiers car ils sont implicitement assignés des valeurs entières:

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

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

Sauf que un changement d'ordre interne à l'enum casserait le codage. – Kenneth

+0

Et quelle classe mettez-vous ces méthodes? Ce sont des types, pas des objets ... 'NSKeyedArchiver'? –

+0

Pour prendre en charge le codage et le décodage des instances, une classe doit adopter le protocole NSCoding et implémenter ses méthodes. Un objet codé ou décodé est responsable de l'encodage et du décodage de son état. – Ushox

Questions connexes