Всякий раз, когда 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.
НТН