2013-03-06 68 views
-1

我已經構建了一些代碼,使輔助詞典存儲主詞典的鍵。所以我可以得到一個關鍵的價值。爲了使它們唯一,在兩個或多個相同的值的情況下,我將字典對象的ID作爲鍵和它們的鍵存儲爲對象。NSDictionary存儲冗餘對象的副本 - 如何防止?

但是當兩個對象具有相同的值時,它們也具有相同的ID。因此,我無法檢索兩個不同的密鑰:

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 

我如何避免這種情況?

+0

「ID」的意思是「地址」?如果是這樣,NSDictionary與此無關。 @「obj1」總是指向同一個對象,而不管它在程序中使用的位置。 – 2013-03-06 01:24:09

+0

契約我的意思是ID。我的目的是獲得獨特的價值 - 密鑰對。所以我使用第二個字典中的ID作爲兩者的參考。 – awado 2013-03-06 09:56:55

回答

0

回答我自己的問題:它不是字典的問題,而是字符串文字的問題。 @「obj1」總是給出相同的ID。爲了解決這個問題,我不得不安裝字典是:

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

注意「的NSMutableString」!你將需要可變對象。