2012-07-23 157 views
1

我想解析一些通過Web服務獲得的JSON。邏輯是:爲什麼[NSArray類]沒有返回我所期望的?

id jsonObject = ....;  //This can be string or array 

if([jsonObject class] == [NSString class] || [jsonObject class] == [NSMutableString class]{ 

// DO some thing 
} 
else if([jsonObject class] = [NSArray class] || [jsonObject class] == [NSMutableArray class]{ 

// Do some thing else 
} 

但是,對於其中一個元素,我遇到了一個奇怪的問題。這個元素的類應該是NSArray,但是當我運行代碼時,我將該類看作__NSArrayM。這與第二個if塊不匹配。

有沒有人告訴我什麼,我做錯了

回答

5

使用,而不是:

if ([jsonObject isKindOfClass:[NSArray class]]) { 
} 

對於類集羣,這是做的唯一正確的方法 - isKindOfClass檢查對象是否是類或其子類之一的實例。有一個類似的方法,isMemberOfClass :,它測試嚴格的類相等/成員(即沒有子類實例被認爲是相等的)。

+0

我希望我能給你2票...我浪費4小時試圖調試... – user1454940 2012-07-23 18:43:17

+0

@ user1454940沒問題,我很高興我可以幫助(順便說一句,接受讓我15代表所以你基本上給了我兩個半;) – 2012-07-23 18:45:11

+0

大聲笑...謝謝..有一個美好的一天 – user1454940 2012-07-23 19:50:29

相關問題