web-dev-qa-db-fra.com

NSDictionary - Nécessité de vérifier si le dictionnaire contient une paire clé-valeur ou non

Je dois juste demander quelque chose comme suit. Supposons que je suis un dictionnaire.

NSMutableDictionary *xyz=[[NSMutableDictionary alloc] init];
[xyz setValue:@"sagar" forKey:@"s"];
[xyz setValue:@"amit" forKey:@"a"];
[xyz setValue:@"nirav" forKey:@"n"];
[xyz setValue:@"abhishek" forKey:@"a"];
[xyz setValue:@"xrox" forKey:@"x"];

Maintenant, je dois vérifier comme suit

[xyz contient-il la clé "b" valeur ?? paire ou pas?

La question est comment?

L'autre question est: comment compter simplement la paire clé-valeur totale?

Dites par exemple NSInteger mCount=[xyz keyCounts];

91
Sagar R. Kothari

Il suffit de demander le objectForKey:@"b". S'il renvoie nil, aucun objet n'est défini sur cette clé.

if ([xyz objectForKey:@"b"]) {
    NSLog(@"There's an object set for key @\"b\"!");
} else {
    NSLog(@"No object set for key @\"b\"");
}

Edit : Quant à votre deuxième question modifiée, elle est simplement NSUInteger mCount = [xyz count];. Ces deux réponses sont bien documentées et facilement trouvées dans la référence de classe NSDictionary ( [1][2] ).

183
Matt B.

Avec la syntaxe littérale, vous pouvez vérifier comme suit

static const NSString* kKeyToCheck = @"yourKey"
if (xyz[kKeyToCheck])
  NSLog(@"Key: %@, has Value: %@", kKeyToCheck, xyz[kKeyToCheck]);
else
 NSLog(@"Key pair do not exits for key: %@", kKeyToCheck); 
1
hariszaman