Comment puis-je ajouter plusieurs clés et des valeurs à un NSMutableDictionary sans utiliser un tableau?

StackOverflow https://stackoverflow.com/questions/2059397

Question

Je sais que vous pouvez ajouter toutes les clés d'un tableau et l'ajouter à un côté du dictionnaire, mais je suis curieux de savoir comment vous pouvez ajouter ou insérer une valeur à un certain point dans le dictionnaire. La façon dont je l'ai maintenant je crois qu'il ne cesse d'écraser les dernières entrées pour faire place à la nouvelle:

NSMutableDictionary *bookmarks = [[NSMutableDictionary alloc] init];
NSString *keyA = @"Stanford University";
NSString *keyB = @"Apple";
NSString *keyC = @"cs193p.com";
NSString *keyD = @"Stanford on iTunes";
NSString *keyE = @"Stanford Mail";
NSString *surlA = @"http://www.stanford.edu";
NSString *surlB = @"http://www.apple.com";
NSString *surlC = @"http://www.cs193p.stanford.edu";
NSString *surlD = @"http://www.itunes.stanford.edu";
NSString *surlE = @"http://www.stanfordshop.com";

NSURL  *urlA;
urlA = [NSURL URLWithString:surlA]; 
NSURL  *urlB;
urlA = [NSURL URLWithString:@"http://www.apple.com"]; 


[bookmarks setValue:urlA forKey: keyA];
[bookmarks setObject:urlB forKey: keyB];
//[bookmarks setObject:urlC forKey: keyC];
//[bookmarks setObject:urlD forKey: keyD];
//[bookmarks setObject:urlE forKey: keyE];

 NSLog(@"%@", [bookmarks valueForKey:keyA]);

Heres la sortie:

2010-01-13 11: 08: 51,484 assignment_1b [6035: a0f] http://www.apple.com

Était-ce utile?

La solution

Je suis surpris que le code ne se bloque pas seulement. Voir ici:

NSURL  *urlA;
urlA = [NSURL URLWithString:surlA]; 
NSURL  *urlB;
urlA = [NSURL URLWithString:@"http://www.apple.com"]; 

Vous assignez à Urla deux fois et jamais attribuer à urlB. Résoudre ce problème et vous verrez la valeur correcte enregistrée.

Notez également que vous pouvez faire ceci:

NSLog(@"dictionary: %@", anNSDictionary);

Et voir toutes les paires clé / valeur dans le dictionnaire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top