2012-08-27 39 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]; 
相关问题