8

NSCodingを利用してNSObjectをdocumentPathに保存するアプリケーションを構築しています。私はこれを行うのに問題はありません、私は何かについて興味があります。

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を実装します。

ただし、私の質問は、encodeWithCoder:(NSCoder *)encoderMAStoreでメソッドを呼び出して、に到達すると、 NSArray[encoder encodeObject:stores forKey:kStores]内に格納されているすべてのオブジェクトに、実装されている場合に呼び出されるメソッドが含まれるかどうかです。storesencoderWithCoder:(NSCoder *)encoder

編集

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

4

1 に答える 1

11

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

于 2011-11-03T01:28:14.400 に答える