Как обрабатывать исключения - PullRequest
0 голосов
/ 15 июня 2011
NSString *stringURL=[[NSString alloc] init];

stringURL=[stringURL stringByAppendingFormat:kSearchBarURL,text.text];

NSString *url = [NSString stringWithString:stringURL];

NSData *data1 = [NSData dataWithContentsOfURL:[NSURL URLWithString:url]];

NSString *responseids = [[NSString alloc] initWithData:data1 encoding:nil];

responseids = [responseids stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"\n\r\t"]];  

SBJsonParser *parser=[SBJsonParser new];

NSData  *data = [parser objectWithString:responseids error:nil];

NSMutableDictionary *searchURL = (NSMutableDictionary*)data;

Я закодировал это, я не обработал исключение для моего кода.

Выполнение JSON и вызов URL службы и загрузка данных.

приложение получает сбой, когда мой сервисслишком низок или служба не найдена.

Как обработать исключение для моего кода здесь ..

Использую ли я @try @catch.или NSURLConnection для обработки ошибок.

Пожалуйста, помогите мне.

Заранее спасибо.

1 Ответ

0 голосов
/ 15 июня 2011

Всякий раз, когда API использует NSError, вы должны использовать это, а не заключать в блоки try… catch, поскольку NSError предназначен именно для этого. Я обычно резервирую @try для вещей, где я действительно не могу предвидеть, что может пойти не так. Если в миксе есть NSError, то вы знаете, что существует вероятность возникновения проблемы, которую вы должны решить изящно.

В общем, в вашем коде есть странные вещи. Вы alloc init пустую строку NSString и затем создаете новую строку, добавляя формат. Не уверен, почему вы не просто используете [NSString stringWithFormat]. Получив строку, вы можете создать URL без бита NSString *url.

Вы также используете синхронный вызов удаленного сервера. Это может замедлить работу вашего приложения, если / когда сервер недоступен. Вы также не сообщаете NSString, в какой кодировке вы ожидаете, что ваша строка будет находиться, когда она читает ее из NSData. Лучшим методом, зависящим от вашей серверной стороны, было бы использование метода stringWithContentsOfURL: usedEncoding: error: метода NSString. Я бы порекомендовал вам использовать различные обратные вызовы NSURLConnection. Посмотрите Руководство по программированию системы загрузки URL-адресов при использовании NSURLConnection Методы делегатов NSURLConnection - это те, которые вы хотите реализовать для обеспечения этой асинхронной обработки.

Для обрезки вас может заинтересовать метод + whitespaceAndNewlineCharacterSet в NSCharacterSet.

Наконец, для анализа JSON вас может заинтересовать категория, которую код SBJSON добавляет к NSString, в частности -JSONValue , которая даст вам представление словаря или массива (в зависимости от ситуации) NSString. когда SBJSON анализирует его как JSON.

НТН

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...