web-dev-qa-db-fra.com

Comment ajouter un objet de NSMutableDictionary à NSMutableArray dans une boucle

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 ne faisait qu'ajouter un pointeur dessus. Je voudrais savoir comment atteindre mon objectif.

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

à partir du code ci-dessus, le tableau workOrders n'aura que des doublons des derniers objets ajoutés. Je suis resté ici pas en mesure de progresser pour afficher les données correctes.

Toute aide serait appréciée.

Merci

24
Ber Biji II

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

27
Kenny Winker

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

20
Akku

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

woRows = [[NSMutableDictionary alloc] init];

vous utilisez le même objet ...

7
Girish Kolari