2010-07-08 5 views
3

Je ne suis pas sûr de comprendre comment faire ce qui suit.Récupérer des données d'un NSDictionary

Si je voulais ajouter, par exemple, un auteur et un titre (clé, valeur) dans un dictionnaire. Remplissez ce dictionnaire avec des données, puis avoir un autre dictionnaire pour dire, par exemple. k = genre v = nom de l'artiste et le remplir avec des données. Puis, je veux ajouter les dictionnaires à un tableau.

Tout d'abord, comment cela se fait-il? et deuxièmement, que se passe-t-il si j'autorise l'utilisateur à enregistrer ses propres entrées. Donc, je dois textfields sur l'écran, lorsque l'utilisateur est fait, il stocke les champs comme paire de valeur de clé dans un nouveau dictionnaire, par exemple. dictionnaire de l'utilisateur Que vais-je faire plus tard en essayant de remplir une tableview avec les données entrées par les utilisateurs, je ne connais pas les clés ou les valeurs dans ce dictionnaire alors comment puis-je récupérer ces données? Je veux dire que je veux charger le dictionnaire de l'utilisateur à partir de l'index de tableau 2 et remplir les cellules d'une table avec chaque entrée du dictionnaire, comment cela se fait-il? Peut-être une méthode comme sur un tableau (get entry.title à l'index bla bla), obtenir la valeur clé dans le dictionnaire? Comment peut-on autrement obtenir des données chargées par l'utilisateur chargées qu'elles ignorent les valeurs?

Cordialement

Répondre

8

Ajouter auteur et le titre à un dictionnaire (en supposant qu'ils sont des objets qui existent déjà - probablement NSString cas dans votre cas):

NSMutableDictionary *books = [[NSMutableDictionary alloc] initWithCapacity:10]; 
[books setObject:title forKey:author]; 

Même chose pour le genre/artiste:

NSMutableDictionary *music = [[NSMutableDictionary alloc] initWithCapacity:10]; 
[books setObject:artist forKey:genre]; 

ensuite les mettre dans un tableau:

NSArray *theArray = [NSArray arrayWithObjects:books, music, nil]; 

ensuite de lire les trucs à l'index du tableau 2:

id key; 
NSDictionary *theDictionary = [theArray objectAtIndex:2]; 
id value; 
for (key in [theDictionary allKeys]) 
{ 
    value = [theDictionary objectForKey:key]; 
    // do something with the value 
} 
+0

Merci. Que faire si je voulais en récupérer un à la fois selon que l'utilisateur avait sélectionné le suivant ou le précédent? – jarryd

+0

Une base de données serait-elle plus efficace? – jarryd

3

Vous pouvez obtenir un NSArray de clés dans le dictionnaire en utilisant allKeys. Ensuite, vous pouvez récupérer les valeurs à l'aide objectForKey:

for (id key in [myDict allKeys]) { 
    NSLog(@"key: %@, value: %@", key, [dictionary objectForKey:key]); 
} 
Questions connexes