0

初期化されていないオブジェクトをに保存するにはどうすればよいNSDictionaryですか?

私はこのようにするだろうと思いますが、それが良いアプローチであるかどうかはわかりません。

 NSDictionary *dict = [[NSDictionary alloc] initWithObjectsAndKeys:
                     [MyObject1 alloc], @"myObject1",
                     [MyObject2 alloc], @"myObject2"
                     , nil];

MyObject1 *object = [dict objectForKey:@"myObject1"];

[object init];

どんな助けでもいただければ幸いです。

4

1 に答える 1

3

必要なのは、変更可能なオブジェクトをディクショナリ内に格納することです。これを行うと、挿入後にそれらを変更できるようになります。これは、不変の辞書では新しいオブジェクトを挿入できないためです。

「初期化されていない」とは、オブジェクトが init なしで alloc のみで作成されたことを意味する場合、 init はalloc で返されたオブジェクトとは異なるオブジェクトを返す可能性があるため、非推奨です。したがって、あなたがやっているようにそれらを保存し、それらを変更する必要があるときはアクセサーを呼び出します:

NSDictionary *dict = @{ @"myObject1" : [MyObject1 new] , @"myObject2" : [MyObject2 new] };
dict[@"myObject1"].someProperty= someValue;

MyObject1 クラスが不変の場合、可変ディクショナリを使用する必要があります。

于 2013-01-12T12:36:36.547 に答える