2011-11-03 3 views
8

NSObjectをdocumentPathに保存するためにNSCodingを利用するアプリケーションを構築しています。 私はこれを行うことに問題はない、私は何かに興味があるだけです。エンコーディング時にNSArrayオブジェクトはどうなりますか?

私は、NSCoding代行メソッドを実装するMACompanyを持っています。

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

} 

ご覧のとおり、私はカスタムNSObjects(MAStore)のNSArrayを持っています。これらのオブジェクトのそれぞれは同じNSCodingを実装していません。私はMAStoreでencodeWithCoder:(NSCoder *)encoderメソッドを呼び出し、それが[encoder encodeObject:stores forKey:kStores]になったときに実装されている場合

はしかし、私の質問は、stores NSArrayの内に格納されているすべてのオブジェクトは、呼び出されたencoderWithCoder:(NSCoder *)encoderメソッドを持っていますか?

EDIT

私はこれを求めている理由は、私はそのようなことをやって時間を投資する前に、それがうまくいくかどうかを知りたいということです。より多くのカスタムNSObjectを保持するNSArraysを持つ複数のカスタムNSObjectがあります。それは動作しないことを見つけるために長いプロセスです。

答えて

11

はい。エンコーダーはコンテナオブジェクト(配列、辞書、セットなど)に再帰的に移動し、これらのオブジェクトもすべてエンコードします。内側のオブジェクトの1つがNSCodingをサポートしていない場合、例外が発生します。

+0

ありがとうございました! :D –

関連する問題