2012-03-23 76 views
0

我想看看這個調用的結果:測試對象是JKArray

NSDictionary *results = [jsonString objectFromJSONString]; 
id contacts=[[results objectForKey:@"list"] objectForKey:@"Contact"]; 

返回數組或字典。

我嘗試這樣做:

[contactdict isKindOfClass:[JKArray class]]; 

但JKArray在JSONKit.m文件靜態聲明,所以Xcode的還看不出來。

回答

9

這是NSClassFromString是什麼:

if ([contactDict isKindOfClass:NSClassFromString(@"JKArray")]) 
{ 
    // do stuff here 
} 
+0

好極了! 謝謝理查德:) – 2012-03-23 16:24:00

+0

@PaulWand沒問題,樂意幫忙!只要不能忘記接受答案! – 2012-03-23 16:24:30

1

您可以簡單地添加@class JKArray;到你正在做這個調用該文件的頂部。這只是告訴編譯器有一個名爲JKArray的類。實際測試在運行時發生。

另外,你應該能夠做到這一點:

[[contactDict className] isEqualToString:@"JKArray"]; 

或本:

[contactDict isKindOfClass:NSClassFromString(@"JKArray")]; 
+0

更正:實際測試發生在鏈接時,而不是運行時。 – 2012-05-19 01:56:14

+0

我指的是'if([contactDict isKindOfClass [JKArray class]]''測試,這肯定是在運行時發生的。如果在鏈接的任何編譯源文件中未定義JKArray,則鏈接器將引發錯誤,這是正確的。但是,只要它確實存在,該程序就會鏈接並正常工作。你會得到一個或多個編譯器警告(「接收器」JKArray'是前鋒類...「)。 NSClassFromString或className比較方法是更好的方法。 – 2012-05-19 17:51:15