2009-08-03 7 views
2

Est-il possible de prendre 2 NSDictionaries et de remplir 1 NSMutableArray? Disons donc que je cette situation:NSDictionary dans 1 NSMutableArray

Dict1 = clé/valeur: id/prenom

DICT2 = clé/valeur: id/lastname

(Ceux-ci sont peuplés d'une base de données requête sur le serveur)

Maintenant, je veux combiner les dictionnaires dans un NSMutableArray d'objets "utilisateur". l'objet utilisateur a ces variables, correspondant aux 2 objets NSDict ci-dessus. Donc: id, prénom, nom (tout est un NSString)

J'ai essayé diverses choses. Le problème est le suivant, quand j'extraire la clé/valeurs de NSDictionary (en utilisant NSEnumerator - mais aussi essayé avec une boucle plus lente) et ajouter l'objet résultant dans le mutablearray, les valeurs des objets dans le tableau sont initialisées au même objet pour toutes les valeurs précédentes. Exemple:

id: 1 - prenom: John - Nom: Brown
id: 2 - prenom: Mike - Nom: Bleu
id: 3 - prenom: Mary - Nom: Blanc

Au moment où Je suis fait avec l'énumération, et d'atteindre la fin de la boucle, mon tableau ressemble à ceci (tous les objets sont identiques)

id: 3 - prenom: Mary - Nom: Blanc
id: 3 - prenom: Mary - nom de famille: Blanc
id: 3 - prénom: Mary - dernier nom: Blanc

Un conseil?

Répondre

4

Je ne sais pas ce que votre problème est un extrait de code peut aider, mais voici comment j'aller à ce sujet:

for (NSString *key in [dict1 allKeys]) { 
    User *u = [[User alloc] initWithId:key 
          firstName:[dict1 objectForKey:key] 
          lastName:[dict2 objectForKey:key]]; 
    [users addObject:u]; 
    [u release]; 
} 

Je ne voudrais pas utiliser le NSEnumerator pour les objets eux-mêmes parce qu'ils ne sont en aucune garantie commande.

Si c'est déjà ce que vous faites, vous devrez peut-être regarder quelque chose de bancal avec votre méthode User init. Utilisez-vous, en fait, le même objet encore et encore?

+0

Merci Ed - ça a marché comme un charme! Je compliquais la situation en ne tirant pas parti de ma méthode init. Merci encore. – Ferris

+0

Vous devez marquer sa réponse comme acceptée si cela a fonctionné pour votre problème. – Jonah

Questions connexes