wake-up-neo.com

Überprüfen Sie, ob der Schlüssel in NSDictionary vorhanden ist

wie kann ich überprüfen, ob dies existiert ?:

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

Ich möchte wissen, ob dieser Schlüssel existiert oder nicht. Wie kann ich das machen?

Vielen Dank :)

EDIT: DataArray enthält Objekte. Und diese Objekte sind NSD-Wörterbücher.

72
cocos2dbeginner

Ich gehe davon aus, dass [dataArray objectAtIndex:indexPathSet.row] eine NSDictionary zurückgibt. In diesem Fall können Sie das Ergebnis von valueForKey einfach mit nil. vergleichen

Zum Beispiel:

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

}
else {
    // No joy...

}
155
John Parker

Ich weiß, dass Sie bereits eine Antwort ausgewählt haben, aber ich fand diese als Kategorie für NSDictionary ziemlich nützlich. Mit diesen unterschiedlichen Antworten beginnen Sie an diesem Punkt, effizienter zu werden. Meh ... 6 von 1 ...

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

Überprüfen Sie, ob es null ist:

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

dies funktioniert auch mit Objective-C-Literalen mit der folgenden Syntax:

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

Versuche dies:

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

Das Wörterbuch enthält einen beliebigen Wert. Ich ziehe es vor, [dic allKeys] .count> 0 zu überprüfen.

0
zedzhao

Dieser macht das gleiche, aber mit weniger 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
}

Das ist die richtige Antwort.

0
WalterDa

Verwenden Sie die Option (unsigned long):

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