2012-08-27 41 views
9

我有一個for循環,通過數組中的一系列字典。添加到NSDictionary條目到NSMutableDictionary

如何合併所有字典條目,因爲它經歷for循環到一個NSMutableDictionary?我試過addEntriesFromDictionary,但它不能正常工作。謝謝你的幫助。

for (int i=0; i<sections.count; i++){ 

    formElements = [[sections objectAtIndex:i]objectForKey:@"Dictionary"];   
} 
+0

你想成爲什麼樣的關鍵?也許我會誤解你。 –

回答

10
NSMutableDictionary * mutableDict = [NSMutableDictionary dictionary]; 

for (NSDictionary * formElements in sections) 
{ 
    [mutableDict addEntriesFromDictionary:formElements]; 
} 

這應該工作,如果他們沒有共享任何密鑰是正確的。

+0

好,太好了。我會嘗試一下,讓你知道 – user984248

12

你可以像下面那樣添加字典對象。

NSMutableDictionary *mDict=[NSMutableDictionary dictionary]; 
    [mDict addEntriesFromDictionary:DictObj]; 
+0

現在發生的事情是每次我經歷循環時,最後一個字典會替換它之前的字典而不是添加它。所以我在第一個字典中有5個條目,第二個字典中有2個條目。最終,我想結合他們有7個條目的計數。 – user984248

+0

@ user984248是因爲這些鍵互相替換。你可能應該爲這個數組使用數組,並且只是[數組addObject:formElements] –

+0

我可以這樣做並且有一個字典作爲最終結果嗎?我已將所有代碼配置爲從字典中讀取條目。 – user984248

0

您可以使用-objectEnumerator或NSDictionary的其他methodfs來枚舉您的字典。

因此,在循環內枚舉字典並將所有對象和鍵添加到一個大字典中。

+0

你能舉個例子嗎?那就是我正在尋找的......最後一本大字典。 – user984248

+0

是的,我可以,但是,Pandey_Laxman解決方案更好。我完全忘了這種方法。如果你仍然想要我可以提供的例子,但我認爲問題在於阿祖萊先生說的雙重鍵。我的解決方案對此無能爲力。 – Engeor

+0

我明白了。他們有不同的鍵。讓我看看我能用數組做什麼 – user984248

1
NSMutableDictionary *mDict=[[NSMutableDictionary alloc]init]; 
    NSMutableDictionary *mDict2=[[NSMutableDictionary alloc]init]; 

//later suppose you have 5 object in mDict and 2 object in mDict2. combine in this Way. 
    NSMutableArray *keys=[[NSMutableArray alloc]init]; 
    NSMutableArray *obj=[[NSMutableArray alloc]init]; 

    keys=[[mDict allKeys] mutableCopy]; 
    obj=[[mDict allValues] mutableCopy]; 

    [keys addObjectsFromArray:[mDict2 allKeys]]; 
    [obj addObjectsFromArray:[mDict2 allValues]]; 

    NSMutableDictionary *dict=[[NSMutableDictionary alloc]initWithObjects:obj forKeys:keys]; 
相關問題