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.
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...
}
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;
}
Ü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
}
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");
Versuche dies:
if ([dict objectForKey:@"bla"]) {
// use obj
} else {
// Do something else like create the object
}
Das Wörterbuch enthält einen beliebigen Wert. Ich ziehe es vor, [dic allKeys] .count> 0 zu überprüfen.
Dieser macht das gleiche, aber mit weniger Code:
if (dataArray[indexPathSet.row][@"SetEntries"] != nil) { /* the key exists */ }
else { /* the key doesn't exist */ }
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.
Verwenden Sie die Option (unsigned long)
:
if ( (unsigned long)[[dataArray objectAtIndex:indexPathSet.row] valueForKey:@"SetEntries"] ) {
// Key exist;
}else{
// Key not exist;
};