2010-01-11 4 views
0

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

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

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

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

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

Спасибо.

ответ

0

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

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

0

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

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

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

+0

Я попытался с помощью «root_element /» как ELEMENTNAME но не работал, то ELEMENTNAME был еще «root_element», который присутствует в правильном документе, а также. – joec

0

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

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

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

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

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

Спасибо,

Madhup