我已經得到了這個XML文件,我正在使用解析器here進行解析,我遇到了一個問題。如果XML中只有一個項目具有相同的結構,那麼解析器將接受XML並創建一個字典,如果有多個XML項目,則解析器將創建一個詞典數組。例如:在Objective-C中測試類的類型
<root>
<item>
<attr1>Hello</attr1>
<attr2>world!</attr2>
</item>
會創建一個字典。但是:
<root>
<item>
<attr1>Hello</attr1>
<attr2>world!</attr2>
</item>
<item>
<attr1>Hello</attr1>
<attr2>world!</attr2>
</item>
會創建一個字典數組。
現在,我將如何區分檢索到的數據是NSDictionary還是NSArray?我該如何設置解析器的結果?例如,現在我正在這樣做:
id eventsArray = [[[[XMLReader dictionaryForXMLData:responseData error:&parseError] objectForKey:@"root"] objectForKey:@"events"] objectForKey:@"event"];
if([eventsArray isMemberOfClass:[NSDictionary class]]) {
//there's only one item in the XML
} else {
//there's more than one item in the XML
}
但這不起作用。那麼,我將如何檢查eventsArray是什麼類型的對象?
謝謝!
'isMemberOfClass'檢查,如果事情是*正是*該類。你需要'isKindOfClass',特別是對於像'NSDictionary'這樣的「類集羣」。 'NSDictionary'類實際上並沒有被使用,而是有一個(非常長的)子類列表,這些子類沒有記錄,並且可以任意改變。你永遠不會知道你會得到哪個子類,並且當你使用它的時候,一個對象在理論上甚至可以從一個類改變到另一個類。 – 2012-03-07 00:04:07