我有一个数组字典:
array3 = [[NSDictionary dictionaryWithContentsOfFile:docpath2] retain];
这里没问题。我现在有 NSString * temp包含一些数字。 我想检查这个数字是否存在于字典中,而不是每个数组。
if([array3 valueForKey:temp])
这是对的吗?如果if为true,那么if循环不执行吗?
<dict>
<key>123456</key>
<array>
<string>low</string>
<string>High</string>
</array>
<key>78910</key>
<array>
<string>low</string>
<string>High</string>
</array>
</dict>
例如temp = 78910,我希望能找到它。
先生答案 0 :(得分:1)
不确定我是否接受了您的问题,但我会试一试。
首先,objectForKey:
是valueForKey:
用于键值编码的方法,如果您的密钥以@开头,则会给您带来奇怪的结果。
然后,如果objectForKey:
确实返回一个指针(即返回值不是nil
/ NULL
/ 0
),则该键存在且具有值(被退回)。所以是的,你可以这样做:
if ([array3 objectForKey:temp]) {
// Do something, the dictionary does contain a value for
// the key referenced by "temp".
}
现在,如果你的密钥是@"123"
之类的字符串,那么你当然可以[array3 objectForKey:@"123"]
。但是如果你得到一个整数,那么你需要做[array3 objectForKey:[NSString stringWithFormat:@"%d", 123]]
。
另请注意,您也可以使用NSNumber
或NSValue
作为密钥。所以你可以这样做:
[myMutableDictionary setObject:someObject forKey:[NSNumber numberWithInt:123]];
myValue = [myMutableDictionary objectForKey:[NSNumber numberWithInt:123]];
if (myValue) {
// Do something.
}
答案 1 :(得分:0)
这应该工作得很好。为什么你认为它不起作用?