2015-05-09 30 views
0

我使用相同的鍵動態填充NSMutableDictionary。但是這樣做會替換原始鍵值。我需要的是它被附加,而不是取代現有的密鑰。例如,我需要一個像添加到NSMutableDictionary而無需替換類似的鍵

{ 
     @"Key" : @"Value1", 
     @"Key" : @"Value2", 
     @"Key" : @"Value3" 
    } 

的結構我知道我可以補充一點,創建一個NSMutableArray的每一個的NSDictionary,但我的問題來,因爲我需要的輸入值是一個NSDictionary中。

目前,我有它取代了原來值

NSMutableDictionary *ripDictionary = [[NSMutableDictionary alloc] init]; 

    for(NSString *ripId in recievedRips){ 

     //SOME OTHER CODE 

     ripDictionary[@"rip"] = keysAndAttributes; 

     [data addObject:ripDictionary]; 
    } 
+1

這只是字典不是如何工作的。你不能擁有你聲稱需要的東西。我懷疑你真的需要這個。更多地解釋數據結構應該代表什麼以及你期望如何使用它。 (例如,如果一本字典可以做你想做的事情,那麼你將如何訪問這些值,因爲這些密鑰是不明確的?它只是沒有意義。) –

回答

3

NSDictionary Reference

字典內的關鍵值對被稱爲一個條目。每個條目由一個表示該鍵的對象和另一個爲該鍵的值的對象組成。 在字典中,密鑰是唯一的。也就是說,單個字典中沒有兩個密鑰等於(由isEqual確定:)。

也許你可以修改代碼以接受像一本字典:

{ 
     @"Key" : [ 
       @"Value1", 
       @"Value2", 
       @"Value3" 
      ] 
} 
+0

爲了闡述@Frankie的答案,你需要的是一本字典的數組,因此,在ObjC字中,由'NSString'鍵和'NSMutableArray'值組成的'NSDictionary'。重做你的代碼以符合這種模式,你應該得到你想要的。 – Romain

1

只能有每個字典中的唯一的鍵下面,所以如果你想用它關聯的多個值,那麼你將這些值添加到一個數組與關鍵相關聯。

if([aDictionary objectForKey:@"key"] != nil){ 
    aDictionary[@"key"] = @[aDictionary[@"key"], bDictionary[@"key"]]; 
}else{ 
    aDictionary[@"key"] = bDictionary[@"key"]; 
    //OR make all aDictionary values array by default with a single value 
    //but you get the point 
} 
相關問題