2012-08-27 19 views
9

Tengo un bucle for que pasa por una serie de diccionarios en una matriz.Agregar a NSDictionary entradas a NSMutableDictionary

¿Cómo puedo consolidar todas las entradas de diccionarios a medida que avanza por el bucle for en un NSMutableDictionary?

Intenté addEntriesFromDictionary, pero no está funcionando. Gracias por tu ayuda.

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

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

¿Cuál quieres ser la clave? Quizás te extraño. –

Respuesta

10
NSMutableDictionary * mutableDict = [NSMutableDictionary dictionary]; 

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

Esto debería funcionar si es correcto que no compartan ninguna clave.

+0

Ok, genial. Voy a probarlo y dejarte saber – user984248

12

puede agregar objetos de diccionario como a continuación.

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

Lo que está sucediendo ahora es que cada vez que paso por el ciclo, el último diccionario reemplaza al anterior, en lugar de agregarlo. Entonces tengo 5 entradas en el primer diccionario y 2 entradas en el segundo diccionario. En última instancia, quiero combinarlos para tener un recuento de 7 entradas. – user984248

+0

@ user984248 Sí, porque las teclas se reemplazan entre sí. Probablemente deberías usar una matriz para esto y simplemente hacer [array addObject: formElements] –

+0

¿Puedo hacer esto y tener un diccionario como resultado final? Tengo todo mi código configurado para leer entradas de un diccionario. – user984248

0

Puede enumerar sus diccionarios con -objectEnumerator u otros métodos de NSDictionary.

De modo que dentro de su ciclo enumera su diccionario y agrega todos los objetos y las claves en un gran diccionario.

+0

¿Puedes dar un ejemplo? Eso es lo que estoy buscando ... un gran diccionario al final. – user984248

+0

Sí, puedo, sin embargo, la solución Pandey_Laxman es mejor. Olvidé por completo este método. Si todavía quieres un ejemplo, puedo darte uno, pero creo que el problema está en las teclas engañosas, como dijo el señor Azulay. Mi solución no te ayudará con esto. – Engeor

+0

Entiendo. Ellos tienen diferentes claves aunque Déjame ver qué puedo hacer con un Array – 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]; 
Cuestiones relacionadas