2011-11-03 13 views
8

NSObject öğelerini documentPath'a kaydetmek için NSCoding kullanan bir uygulama yapıyorum. Bunu yaparken sorun yaşıyorum, sadece bir şey hakkında merak ediyorum.Kodlama yaparken NSArray nesnesine ne olur?

NSCoding temsilci yöntemlerini uygulayan bir MACompany var. Gördüğünüz gibi

- (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 

} 

, ben özel NSObjects bir NSArray (MAStore) var. Bu nesnelerin her biri de aynı NSCoding'i uygulamıyor. eğer uygulanırsa

Ancak, ben MAStore içinde encodeWithCoder:(NSCoder *)encoder yöntemini çağırın ve bu [encoder encodeObject:stores forKey:kStores] vardığında benim söz vardır, encoderWithCoder:(NSCoder *)encoder yöntemi denir stores NSArray içinde depolanan tüm nesneler olacak?

DÜZENLEME

Bunu soruyorum nedeni ben böyle bir şey yaparken zaman harcaması önce bu ödeme şekli olup olmadığını bilmek istiyorum olmasıdır. Daha fazla NSObjects tutan NSArrays ile birden çok özel NSObjects var. İşe yaramadığını bulmak uzun bir süreç olacaktı.

cevap

11

Evet. Kodlayıcı art arda konteynır nesnelerine (diziler, sözlükler, kümeler vb.) Girer ve bu nesnelerin tümünü de kodlar. İç nesnelerden birinin NSCoding'u desteklememesi durumunda bir istisna vurursunuz.

+0

Çok teşekkür ederim! : D –

İlgili konular