如何检查是否存在?:
[[dataArray objectAtIndex:indexPathSet.row] valueForKey:@"SetEntries"]
我想知道此密钥是否存在。我怎样才能做到这一点?
非常感谢你 :)
编辑:dataArray中有对象。这些对象是NSDictionaries。
如何检查是否存在?:
[[dataArray objectAtIndex:indexPathSet.row] valueForKey:@"SetEntries"]
我想知道此密钥是否存在。我怎样才能做到这一点?
非常感谢你 :)
编辑:dataArray中有对象。这些对象是NSDictionaries。
Answers:
我相信这[dataArray objectAtIndex:indexPathSet.row]
是返回一个NSDictionary
,在这种情况下,你可以简单地检查的结果,valueForKey
对nil.
例如:
if ([[dataArray objectAtIndex:indexPathSet.row] valueForKey:@"SetEntries"] != nil) {
// The key existed...
}
else {
// No joy...
}
因此,我知道您已经选择了一个答案,但是我发现它作为上的一个类别非常有用NSDictionary
。此时,您会通过所有这些不同的答案开始提高效率。h ... 6之1 ...
- (BOOL)containsKey: (NSString *)key {
BOOL retVal = 0;
NSArray *allKeys = [self allKeys];
retVal = [allKeys containsObject:key];
return retVal;
}
这也可以通过以下语法在Objective-C文字中使用:
NSDictionary *dict = @{ @"key1" : @"value1", @"key2" : @"value2" };
if (dict[@"key2"])
NSLog(@"Exists");
else
NSLog(@"Does not exist");
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
}
objectForKey:
而不是其他方法?为什么不显式地必须检查值?至少,使用问题中提供的代码示例将使您的示例与原始问题更加容易。
-valueForKey:
而不是-objectForKey:
?前者用于键值编码,但比后者慢一些。