465 votes

Comment vérifier si un NSDictionary ou NSMutableDictionary contient une clé ?

J'ai besoin de vérifier si un dict a une clé ou non. Comment?

779voto

Adirael Points 5207

``renvoie zéro si une clé n’existe pas.

163voto

Aleksejs Mjaliks Points 3340
 if ([[dictionary allKeys] containsObject:key]) {
    // contains key
}
 

ou

 if ([dictionary objectForKey:key]) {
    // contains object
}
 

100voto

SaintMacintosh Points 487

Les versions plus récentes d'Objective-C et de Clang ont une syntaxe moderne pour cela:

 if (myDictionary[myKey]) {

}
 

Vous n'avez pas besoin de vérifier l'égalité avec zéro, car seuls les objets Objective-C peuvent être stockés dans des tableaux. Et tous les objets Objective-C sont des valeurs véridiques. Même @NO , @0 et [NSNull null] évaluent comme valeurs vraies dans le contexte d'une instruction if.

22voto

ChristopheD Points 38217
if ([mydict objectForKey:@"mykey"]) {
    // key exists.
}
else
{
    // ...
}

8voto

q231950 Points 71

J'aime la réponse de Fernandes même si vous demandez deux fois l'objectif.

Cela devrait également faire (plus ou moins la même chose que Martin A).

 id obj;

if ((obj=[dict objectForKey:@"blah"])) {
   // use obj
} else {
   // Do something else like creating the obj and add the kv pair to the dict
}
 

Martin et cette réponse fonctionnent tous les deux sur iPad2 iOS 5.0.1 9A405

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X