如果在nsdictionary中也是如此

时间:2010-09-22 19:57:10

标签: iphone xcode

我有一个数组字典:

    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,我希望能找到它。

先生

2 个答案:

答案 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]]

另请注意,您也可以使用NSNumberNSValue作为密钥。所以你可以这样做:

[myMutableDictionary setObject:someObject forKey:[NSNumber numberWithInt:123]];
myValue = [myMutableDictionary objectForKey:[NSNumber numberWithInt:123]];
if (myValue) {
  // Do something.
}

答案 1 :(得分:0)

这应该工作得很好。为什么你认为它不起作用?