-1

メインディクショナリのキーを格納するための補助ディクショナリを作成するコードを作成しました。だから私は値の鍵を手に入れることができます。それらを一意にするために、2つ以上の同一の値の場合、ディクショナリオブジェクトのIDをキーとして保存し、それらのキーをオブジェクトとして保存します。

ただし、2つのオブジェクトの値が同じ場合、それらのIDも同じになります。したがって、2つの異なるキーを取得できません。

NSDictionary *myDict = @{@"key1": @"obj1", @"key2": @"obj1", @"key3" : @"x"};
NSLog(@"%p",[myDict objectForKey:@"key1"]);
NSLog(@"%p",[myDict objectForKey:@"key2"]);

出力:

2013-03-06 02:03:28.740 DictTest[2855:303] 0x1000028e8
2013-03-06 02:03:28.741 DictTest[2855:303] 0x1000028e8

どうすればこれを防ぐことができますか?

4

1 に答える 1

0

私自身の質問に答えるために:それは辞書の問題ではなく、文字列リテラルの問題です。@"obj1"は常に同じIDを与えます。この問題を解決するには、次の方法で辞書を設定する必要があります。

NSDictionary *myDict = @{@"key1": [NSMutableString stringWithFormat:@"%@",@"obj1"], @"key2": [NSMutableString stringWithFormat:@"%@",@"obj1"], @"key3" : @"x"};

「NSMutableString」に注意してください!可変オブジェクトが必要になります。

于 2013-03-06T09:53:06.453 に答える