2011-12-21 3 views
0

В JSON синтаксического анализа, за исключением синтаксического анализа данных в NSDictionary, И читать key-value как:Как поймать исключение в iOS?

NSString *verCode = [JSONDict objectForKey:@"v"]; 

, но когда-то, ключ-значение другой формат, программа даст сбой, поэтому мне нужно тайному к stringValue;
так:

NSString *verCode = [[JSONDict objectForKey:@"v"] stringValue]; 

Как я могу поймать исключение в программе IOS?

ответ

4

Вы можете использовать @try {} код для исключения исключений.

В вашем случае, хотя лучший подход, чтобы смотреть на типы объекта в массиве для ключа и использовать право конвертации в случае необходимости:

id object = [myJSONDict objectForKey:@"theValue"]; 

NSString *finalVal = nil; 

if ([object isKindOfClass:[NSNumber class]]) 
    finalVal = [object stringValue] 
else 
    finalVal = object; 
+1

Согласовано. Разбор JSON является одним из немногих мест, в которых необходимо явно проверять класс возвращаемого объекта. –

+0

Может ли это быть еще рядом с NSNumber? Тогда как вы справляетесь с этим? – user523234

+1

Парсеров JSON вернет только NSString и NSNumber для значений - или досадно иногда NSNull (в этом случае вы должны просто установить свою переменную в nil или 0). Нет реального стандарта даты JSON, поэтому вы не получите NSDate. Конечно, вы также можете получить обратно словари и массивы, но это под-коллекции, а не окончательные значения ... –

Смежные вопросы