2014-04-25 32 views
0

我曾與20 ob​​jects.Each對象一個可變數組已經給定的格式如何從字典中獲取值時,它的一些按鍵動態改變

{ 

"NONE-NONE-ABCD-RECD" =  { 
    Count =   
     { 
       bird = "10"; 
       animal = "4"; 
     }; 

    Type = "NONE-NONE-ABCD-RECD"; 
}; 

} 

關鍵NONE-NONE-ABCD-RECD將是不同objects.Some不同次成爲NONE-NONE-NONE-NONEABCD-PQWE-MNBW-POWE等。我需要找到找到的每個物體的鳥和動物。當鑰匙改變時,我可以如何獲得計數。

+1

我不明白爲什麼「Type」條目存在,因爲它與頂級字典鍵相同。刪除它並依靠頂級密鑰是找到條目的最快捷方式。另外,它看起來像那些'計數'字典條目應該是數字,而不是字符串... – trojanfoe

+0

'鍵入'是'鍵'?否則,如果您總是等待帶有'count'鍵的子字典,則可以迭代並獲取'NSDictionary'的鍵。 – Larme

+0

@ trojanfoe.I正在客戶端工作,實際上它來自severside.This格式是需要他們的網絡開發 – user3564078

回答

1

試試這個,

NSArray *allKeys = [elementDict allKeys]; //elementDict array object 
if ([allKeys count] > 0) { 
    NSDictionary *objectDict = [elementDict objectForKey:[allKeys objectAtIndex:0]]; 
    NSDictionary *countDict = [objectDict objectForKey:@"Count"]; 
    //from countDict you can access values 
    NSString *bird = [countDict valueForKey:@"bird"]; 
    NSString *animal = [countDict valueForKey:@"animal"]; 
} 
+0

它也在工作謝謝你。 – user3564078

+0

@ user3564078不客氣 – Akhilrajtr

+0

我還有一個疑惑。我用一些條件設置了一個謂詞。如果條件失敗會返回什麼?像空或空字符串的東西? – user3564078

0

好吧,如果Type將每次返回你的key,你可以這樣做:

NSString *yourKey = [yourDictionary objectForKey:@"Type"]; 
NSDictionary *countDict = [yourDictionary objectForKey:yourKey]; 
int bird = [[countDict objectForKey:@"bird"] intValue]; 
int animal = [[countDict objectForKey:@"animal"] intValue]; 

其他解決方案:

for (NSString *aKey in yourDictionary) 
{ 
    if ([[yourDictionary objectForKey:@"aKey"] isKindOfClass:[NSDictionary class]]) 
    { 
     NSDictionary *countDict = [yourDictionary objectForKey:aKey]; 
     int bird = [[countDict objectForKey:@"bird"] intValue]; 
     int animal = [[countDict objectForKey:@"animal"] intValue]; 
    } 
} 

其他的解決方案,根據你的對象是否可能包含其他子字典:

for (NSString *aKey in yourDictionary) 
{ 
    if ([[yourDictionary objectForKey:@"aKey"] objectForKey:@"Count"]) 
    { 
     NSDictionary *countDict = [[yourDictionary objectForKey:@"aKey"] objectForKey:@"Count"]; 
     int bird = [[countDict objectForKey:@"bird"] intValue]; 
     int animal = [[countDict objectForKey:@"animal"] intValue]; 
    } 
} 
+0

其工作感謝你。 – user3564078

相關問題