Как узнать, имеет ли значение 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;
}