web-dev-qa-db-fra.com

La clé de contrôle existe dans NSDictionary

comment puis-je vérifier si cela existe ?:

[[dataArray objectAtIndex:indexPathSet.row] valueForKey:@"SetEntries"]

Je veux savoir si cette clé existe ou non. Comment puis je faire ça?

Merci beaucoup :)

EDIT: DataArray contient des objets. Et ces objets sont NSDictionaries.

72
cocos2dbeginner

Je suppose que [dataArray objectAtIndex:indexPathSet.row] renvoie un NSDictionary , auquel cas vous pouvez simplement vérifier le résultat de valueForKey par rapport à nil.

Par exemple:

if ([[dataArray objectAtIndex:indexPathSet.row] valueForKey:@"SetEntries"] != nil) {
    // The key existed...

}
else {
    // No joy...

}
155
John Parker

Je sais donc que vous avez déjà sélectionné une réponse, mais j’ai trouvé cette réponse plutôt utile en tant que catégorie sur NSDictionary. Vous commencez à être efficace à ce stade avec toutes ces réponses différentes. Meh ... 6 sur 1 ...

- (BOOL)containsKey: (NSString *)key {
     BOOL retVal = 0;
     NSArray *allKeys = [self allKeys];
     retVal = [allKeys containsObject:key];
     return retVal;
}
46
Miles Alden

Vérifiez si c'est nul:

if ([[dataArray objectAtIndex:indexPathSet.row] valueForKey:@"SetEntries"] != nil) {
    // SetEntries exists in this dict
} else {
    // No SetEntries in this dict
}
34
BoltClock

cela fonctionne également avec les littéraux Objective-C en utilisant la syntaxe suivante:

NSDictionary *dict = @{ @"key1" : @"value1", @"key2" : @"value2" };
if (dict[@"key2"])
NSLog(@"Exists");
else
NSLog(@"Does not exist");
6
Yogesh Kumar

Essaye ça:

if ([dict objectForKey:@"bla"]) {
   // use obj
} else {
   // Do something else like create the object
}
0
Tea

Le dictionnaire de vérification ne contient aucune valeur. Je préfère [dic allKeys] .count> 0 pour vérifier.

0
zedzhao

Celui-ci fait la même chose mais avec moins de code:

if (dataArray[indexPathSet.row][@"SetEntries"] != nil) { /* the key exists */        } 
else                                                   { /* the key doesn't exist */ }
0
Jesus
if ((NSNull *)[[dataArray objectAtIndex:indexPathSet.row] valueForKey:@"SetEntries"] != nil) {
    // SetEntries exists in this dict
} else {
    // No SetEntries in this dict
}

C'est la bonne réponse.

0
WalterDa

Utilisez l'option (unsigned long):

if ( (unsigned long)[[dataArray objectAtIndex:indexPathSet.row] valueForKey:@"SetEntries"] ) {
    // Key exist;
}else{
    // Key not exist;
};
0
TheAlphaGhost