Проверьте, является ли документ XML пустым, используя NSXMLParser - PullRequest
0 голосов
/ 11 января 2010

Я пишу приложение для iPhone, которое извлекает данные из веб-службы в формате XML. Если данные не найдены веб-сервисом, он возвращает пустой документ, такой как

<?xml version="1.0"?>
<root_element/>

Эти данные анализируются, а затем добавляются в массив, а затем в табличное представление.

В моем -numberOfRowsInSection у меня есть return [self.array count]; Но, очевидно, если документ пуст, в массив ничего не добавляется, и я не получаю ошибку разбора, а вместо этого получаю ошибку index out of bounds. Есть ли метод isDocumentEmpty или какое-либо другое средство проверки наличия элементов в документе?

Как еще вы предложите мне проверить это? И каким образом я должен использовать, чтобы предупредить пользователя? Просмотр предупреждений, а затем выдвижение контроллера?

Спасибо.

Ответы [ 3 ]

0 голосов
/ 11 января 2010

Чтобы узнать, как использовать NSXMLParser для анализа XML-данных, вы можете проверить SeismicXML пример приложения от Apple.

В этом приложении синтаксический анализ XML выполняется в фоновом потоке и обновляет представление таблицы землетрясений пакетами проанализированных объектов.

0 голосов
/ 11 января 2010

Я думаю, проблема в том, где вы хотите перезагрузить просмотр таблицы.Исключение вне границ генерируется при доступе к элементу из массива, выходящего за пределы диапазона индексов массива.

Итак, вот несколько советов по отладке, чтобы точно знать, в чем заключается ваша проблема

  • прежде всего, перейдите в консоль после возникновения исключения.введите «where» и нажмите ввод, чтобы получить сведения об исключении.
  • Вы получите точный номер строки, в которой вы получаете эту ошибку.
  • Поставьте точку останова непосредственно перед этой строкой и выполните отладку там.

Вы найдете ошибку, которую делаете.

Если это не поможет.Пожалуйста, покажите фрагмент кода.

Спасибо,

Madhup

0 голосов
/ 11 января 2010

Вы можете использовать:

-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName
 namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qName
   attributes:(NSDictionary *)attributeDict

и проверьте root_element/ как elementName

...