タグに関係なく、指定された xml ファイルを解析できるアプリケーションを 1 つ作成しました。xmlファイルのリスト単一レベルでうまく機能しています。オブジェクトにxml値を割り当てたいと思います。xmlは異なる場合があるため、クラスも汎用クラスであり、データメンバーも必要です。データ型 ID を使用して汎用データ メンバーを実現できます。しかし、問題は異なるxmlが異なる数のデータ型を持つことができるということです。実行時にデータメンバーの数を決定することは可能ですか? (ここで xml を 2 回読み込んでいますが、目標を達成するのに役立つでしょうか?)
3 に答える
Key-Valueコーディングはニーズに完全に一致します。すばやく簡単なものが必要な場合は、NSMutableDictionaryを使用できます。
OPの別の質問からここに来ます。A-Liveの答えを詳しく説明します。
オブジェクトが値の完全に一般的なホルダーである場合は、を使用する必要がありますNSMutableDictionary
。KVCは機能しますが、特に使用する必要はありません。
オブジェクトにいくつかの固定プロパティと任意の数のアドホックプロパティがある場合、または値の保持に加えていくつかの動作が必要な場合はNSMutableDictionary
、カスタムクラスでラップできます。この場合、カスタムクラスは-valueForUndefinedKey:
、キーがクラスの通常のプロパティのいずれにも対応していないときに、ディクショナリから値を取得するように実装します。同様に-setValue:forUndefinedKey:
、辞書に保存することでアドホックプロパティを設定できるように実装します。
-valueForKey:
これらのメソッドの両方が定義されると、クラスのクライアントはKVCを使用して、とを使用してプロパティ値を取得および設定できます-setValue:forKey:
。
実装する「未定義のキー」メソッドは、すべてのキーをディクショナリに渡すことで完全に許容できるか、許可された/既知のプロパティのリストに対してキーをチェックすることができます。このリストは、コンパイル時に修正されるのではなく、実行時に確立されますが、どこかからその情報がある場合は、少し安全性が高まります。不明/許可されていないキーについては、super
の実装を呼び出すだけです。
必要に応じて、両方の方法(おそらくセッター)は、アドホックプロパティに関連する動作を実装することもできます。