2012-11-08 40 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對象,您可以對此進行測試。 –