2011-11-03 22 views
8

Estoy construyendo una aplicación que utiliza NSCoding para guardar NSObject en un documentPath. No tengo problemas para hacer esto, solo tengo curiosidad por algo.¿Qué le sucede a un objeto NSArray cuando se codifica?

Tengo MACompany, que implementa los métodos de delegado NSCoding.

- (void) encodeWithCoder:(NSCoder *)encoder { 

    [encoder encodeObject:address_1 forKey:kAddress_1]; 
    [encoder encodeObject:address_2 forKey:kAddress_2]; 
    [encoder encodeObject:city_town forKey:kCity_Town]; 
    [encoder encodeObject:company_name forKey:kCompany_Name]; 
    [encoder encodeObject:country forKey:kCountry]; 
    [encoder encodeObject:date_added forKey:kDate_Added]; 
    [encoder encodeObject:fax forKey:kFax]; 
    [encoder encodeObject:parent_company_website forKey:kWebsite]; 
    [encoder encodeObject:postal_code forKey:kPostal_Code]; 
    [encoder encodeObject:state_province forKey:kState_Province]; 
    [encoder encodeObject:type forKey:kType]; 

    [encoder encodeObject:stores forKey:kStores]; //NSArray of custom NSObjects 

} 

Como puede ver, tengo un NSArray de NSObjects personalizados (MAStore). Cada uno de estos objetos también implementa el mismo NSCoding que no.

Sin embargo, mi pregunta es, cuando llamo encodeWithCoder:(NSCoder *)encoder método en el MAStore, y que llega a la [encoder encodeObject:stores forKey:kStores], serán todos los objetos almacenados dentro de la stores NSArray han denominado el método encoderWithCoder:(NSCoder *)encoder si se aplican?

EDITAR

La razón por la que estoy pidiendo esto es que me gustaría saber si es o no va a trabajar antes de invertir tiempo en hacer tal cosa. Tengo varios NSObjects personalizados con NSArrays que contienen más NSObjects personalizados. Sería un proceso largo descubrir que no funciona.

Respuesta

11

Sí. El codificador entra recursivamente en objetos contenedores (matrices, diccionarios, conjuntos, etc.) y codifica todos esos objetos también. Tocará una excepción si uno de los objetos internos no es compatible con NSCoding.

+0

¡Muchas gracias! :RE –

Cuestiones relacionadas