2009-12-24 16 views
24

J'ai du mal à ajouter une structure de données à un tableau pour créer un tableau de dictionnaires à partir d'une boucle. Je savais juste que addObject dans NSMutableArray seulement ajouter un pointeur. Je voudrais savoir comment atteindre mon objectif.Comment ajouter un objet de NSMutableDictionary à NSMutableArray dans une boucle

Voici mon code:

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

du code ci-dessus, les WorkOrders tableau auront les doublons d'objets ajoutés uniquement dernier. Je suis resté ici incapable de progresser pour afficher les bonnes données.

Toute aide sera appréciée.

Merci

Répondre

27

essayer de faire [workOrders addObject:[woRows copy]];

+1

Cela a fonctionné, et j'aime votre approche et être utilisé dans mon code. Une idée de pourquoi je ne peux pas voter pour votre réponse? Il a gardé changé à zéro –

7

déplacer votre code de création de dictionnaire dans la boucle (à l'intérieur si la condition)

woRows = [[NSMutableDictionary alloc] init]; 

vous utilisez un même objet ...

+1

Merci, cela a fonctionné. Une idée de pourquoi je ne peux pas voter pour votre réponse? –

+0

même si vous n'avez pas la réputation minimale requise pour voter .... –

20

Je sais , c'est un peu en retard et même pas ce que vous demandiez, mais je suppose que vous vouliez utiliser [woRows setObject:forKey:] au lieu de [woRows setValue:forKey:]