Как узнать, имеет ли значение DDXMLElement?

У меня есть элементы XML WebService (и нет шансов изменить это), которые могут быть пустыми, но я не вижу очевидного способа сделать это с помощью KissXML.

Есть ли способ предотвратить сбой приложения, если <thing>false</thing> является <thing/>?

Я использую этот код:

if ([[element elementsForName:@"thing"] count] > 0) {
    id obj = [[element elementsForName:@"thing"] objectAtIndex:0];
    if (obj) self.thing = [obj boolValue];
}

1 ответ

Решение

Всегда проверяйте эти объекты, особенно потому, что XML поступает извне приложения и может иметь непредсказуемое форматирование. Ты звонишь objectAtIndex:, но вы не знаете, сколько там объектов.

if ([[element elementsForName:@"thing"] count] > 0) {

   NSArray *elements = [element elementsForName:@"thing"];

   id obj = [elements objectAtIndex:0];

   NSString *stringValue = [obj stringValue];

   BOOL boolValue = FALSE;

   if(stringValue) {
     boolValue = [stringValue boolValue];
   }
   self.thing = boolValue;
}
Другие вопросы по тегам