Тестирование по типу класса в target-c - PullRequest
2 голосов
/ 07 марта 2012

У меня есть этот XML-файл, который я анализирую с помощью парсера здесь , и у меня возникла проблема.Анализатор берет XML и создает из него словарь, если в XML есть только один элемент с такой же структурой, или массив словарей, если имеется более одного элемента XML.Например:

<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?

Спасибо!

Ответы [ 2 ]

3 голосов
/ 07 марта 2012

Попробуйте эту ссылку:

if([eventsArray isKindOfClass:[NSDictionary class]]) {
  //there's only one item in the XML
} else {
  //there's more than one item in the XML
}

Надеюсь, это поможет.

0 голосов
/ 07 марта 2012

Я бы сделал:

if ([eventsArray isKindOfClass:[NSArray class]])
////
else if ([eventsArray isKindOfClass:[NSDictionary class]])
////
else
////
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...