2012-11-08 27 views
0

我想referenciate一个KET,而不是它所包含的内容上的NSDictionary这样的:可可 - 参考一键NSDictionary的

key { 
    14819 =  { 
     contactDetails =   { 
      dictionary =    { 
       interests =     { 
        Movies = 
     ... 

我想让这样的事情:

if([key isEqualToString:@"14819"]){ 
do something 
} 

灿你帮我?

回答

1

您可以使用nsdictionary中的allkeys方法来获取键数组,而不是迭代它来比较!像这样:

NSArray*keys=[dict allKeys]; 
for(NSString *key in keys) { 
    if ([key [email protected]"14819"] == NSOrderedSame) { 
     do something 
    } 
} 
+0

或者你可以发送一个'containsObject:'消息给数组(参见AJak的答案)。 –

1

应该能够用allKeys查找它。写了一个简单的例子,希望这有助于。

NSMutableDictionary *testDictionary = [[NSMutableDictionary alloc]init]; 
[testDictionary setObject:@"value" forKey:@"testObject"]; 

BOOL containsKey = [[testDictionary allKeys] containsObject:@"testObject"]; 

NSLog(@"testing %d" ,containsKey); 
1

如果你只是想测试开关是否在词典中,使用objectForKey:和测试对象是否为nil

获取allKeys并搜索它的密钥将工作,但几乎肯定会变慢。字典是散列表; objectForKey:使用该事实,而allKeys不使用。

+0

我与NSDictionarys的另一个问题是,它来自json响应服务,有时一些字段como等于,应用程序刚刚崩溃! –

+0

@fabiosantos:你是什么意思的“领域”?如果密钥出现在字典中并且对象描述为“''”,那么这是一个NSNull对象,您可以对此进行测试。 –