2009-12-24 12 views
24

Ho difficoltà ad aggiungere una struttura dati a un array per creare una serie di dizionari da un loop. Sapevo solo che addObject in NSMutableArray aggiungeva solo puntatore ad esso. Mi piacerebbe sapere come raggiungere il mio obiettivo.Come aggiungereObject di NSMutableDictionary a NSMutableArray in un ciclo

Ecco il mio codice:

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]; 

dal codice di cui sopra, i workorders matrice avranno duplicati di ultimi oggetti aggiunti solo. Mi sono bloccato qui non in grado di progredire per visualizzare i dati corretti.

Qualsiasi aiuto sarà apprezzato.

Grazie

risposta

27

provo a fare [workOrders addObject:[woRows copy]];

+1

Ha funzionato e mi piace il tuo approccio e viene utilizzato nel mio codice. Qualche idea sul perché non posso votare per la tua risposta? È stato modificato nuovamente a zero –

7

spostare il codice di creazione dizionario all'interno del ciclo (all'interno se la condizione)

woRows = [[NSMutableDictionary alloc] init]; 

si utilizza stesso oggetto ...

+1

Grazie, ha funzionato. Qualche idea sul perché non posso votare per la tua risposta? –

+0

anche tu non hai la minima reputazione richiesta per votare .... –

20

lo so , è un po 'tardi e non è nemmeno quello che stavi chiedendo, ma suppongo che tu voglia usare [woRows setObject:forKey:] invece di [woRows setValue:forKey:].

Problemi correlati