0

NSString プロパティcontactInfoEntityTypeと、 contactInfoEntityTypeに基づいて任意の数のプロパティを格納するコンテナ オブジェクトpropertiesを持つContactInfoEntityという名前のオブジェクトを設計しています。

目標は、実行時にユーザーが新しいContactInfoEntityTypeを定義できるようにすることです。

現在、ContactInfoEntityType で NSMutableDictionary を使用しています。これには、値:@"Generic" のキー:@"typeName" があります。

新しい ContactInfoEntityType を定義するには、キー @"typeName" の値を変更し、新しいキー @"newPropertyName1"、@"newPropertyName2"、... を値として NSDicts で追加します。ネストされた辞書のキーは、@"defaultValue"、@"index"、@"formatToken"、... のようなものです。

[ContactInfoEntityFactory contactInfoEntityOfType:emailInfoEntityType];送信されると、ファクトリは @"emailInfoEntityType" を @"typeName" キーの値として持つ NSMutableDictionary を取得し、@"domain"、@"localPart"、および @"emailNickname" の 3 つの追加の辞書エントリがあることを確認します。

次に、contactInfoEntityTypeが @"emailInfoEntityType" であり、プロパティコンテナーが関連付けられた defaultValues を持つ 3 つのエントリを持つ ContactInfoEntity を作成します。

現在、私のプロパティコンテナは NSArray と NSMutableArray です。NSArray は newPropertyNames を保持し、NSMutableArray は値を保持します - 両方とも同じインデックスにあります。NSArray はエンティティ型定義の一部の情報を複製しますが、定義が消去された場合に備えて、個々のエンティティのデータを意味のあるものに保つと思います。

これは、この問題に対する合理的なアプローチですか? これは私がこれまでに試みた中で最も抽象的なオブジェクトであり、まだすべての一般的な設計パターンに頭を悩ませていません。

具体的には、型定義用の NSMutableDictionary やプロパティオブジェクト用の NSArray/MutableArray よりも適切なクラスはありますか?

私が質問をした方法についての意見もお待ちしています。

4

1 に答える 1

0

煩わしい可能性があるとして私に飛び出す唯一のことは次のとおりです。

「現在、私のプロパティ コンテナは NSArray と NSMutableArray です。NSArray は newPropertyNames を保持し、NSMutableArray は値を保持しています - 両方とも同じインデックスにあります。」

私は、データ要素を関連付ける方法としての並列配列を長年嫌っています。各オブジェクトに名前と値のペアが含まれる、単一のオブジェクト配列をお勧めします。これにより、ある種の添字エラーが防止され、必要に応じてペア固有のロジックを使用できるようになります。

于 2012-05-16T21:55:23.093 に答える