iphone nsmutablearray nsmutabledictionary

iphone - Cómo agregar Objeto de NSMutableDictionary a NSMutableArray en un bucle



(3)

Tengo dificultades para agregar una estructura de datos a una matriz para crear una matriz de diccionarios a partir de un bucle. Acabo de saber que addObject en NSMutableArray solo le agrega un puntero. Me gustaría saber cómo lograr mi objetivo.

Aquí está mi código:

NSMutableDictionary *woRows = [[NSMutableDictionary alloc] init]; NSMutableArray *workOrders = [[NSMutableArray alloc] init]; while ([theScanner isAtEnd] == NO) { if ([theScanner scanUpToCharactersFromSet:usSet intoString:&tempCol1] && [theScanner scanString:@"{US}" intoString:NULL] && [theScanner scanUpToCharactersFromSet:usSet intoString:&tempCol2] && [theScanner scanString:@"{US}" intoString:NULL] && [theScanner scanUpToCharactersFromSet:usSet intoString:&tempCol3]&& [theScanner scanString:@"{RS}" intoString:NULL]) { [woRows setValue:tempCol1 forKey:@"hours"]; [woRows setValue:tempCol2 forKey:@"colMain"]; [woRows setValue:tempCol3 forKey:@"colAddtl"]; [workOrders addObject:woRows]; [woRows release]; } } [tmpString release]; [jobs addObject:workOrders]; [workOrders release];

a partir del código anterior, la matriz workOrders tendrá duplicados de los últimos objetos agregados solamente. Me quedé aquí sin poder avanzar para mostrar los datos correctos.

Cualquier ayuda será apreciada.

Gracias


Lo sé, esto es un poco tarde e incluso no es lo que [woRows setObject:forKey:] , pero supongo que querías usar [woRows setObject:forKey:] lugar de [woRows setValue:forKey:] .


intente hacer [workOrders addObject:[woRows copy]];


mueva el código de creación del diccionario dentro del bucle (dentro de la condición if)

woRows = [[NSMutableDictionary alloc] init];

estás usando el mismo objeto ...