NSDictionary 中存在检查键

我怎样才能检查它是否存在? :

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

我想知道这把钥匙是否存在,我该怎么做?

非常感谢

编辑: DataArray 中包含对象,这些对象是 NSDictionaries

99864 次浏览

检查是否为零:

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

我假设 [dataArray objectAtIndex:indexPathSet.row]返回的是 NSDictionary,在这种情况下,您可以简单地根据 nil.检查 valueForKey的结果

例如:

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


}
else {
// No joy...


}

所以我知道你已经选择了一个答案,但我发现这是相当有用的作为一个类别上的 NSDictionary。在这一点上,你开始用所有这些不同的答案来提高效率。呃... 一个中的六个..。

- (BOOL)containsKey: (NSString *)key {
BOOL retVal = 0;
NSArray *allKeys = [self allKeys];
retVal = [allKeys containsObject:key];
return retVal;
}
if ((NSNull *)[[dataArray objectAtIndex:indexPathSet.row] valueForKey:@"SetEntries"] != nil) {
// SetEntries exists in this dict
} else {
// No SetEntries in this dict
}

答对了。

试试这个:

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

这个代码也可以做同样的事情,只是代码更少:

if (dataArray[indexPathSet.row][@"SetEntries"] != nil) { /* the key exists */        }
else                                                   { /* the key doesn't exist */ }

这也可以使用 Objective-C 文本,使用以下语法:

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

Check dictionary contains any value. I prefer [dic allKeys].count > 0 to check.

使用 (unsigned long)选项:

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