Как настроить мой XMLParser для хранения неопределенного количества объектов?

#cocoa-touch #ios #nsmutablearray #nsxmlparser

#cocoa-touch #iOS #nsmutablearray #nsxmlparser

Вопрос:

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

Ситуация, с которой я столкнулся прямо сейчас, заключается в попытке выяснить, как сохранить неизвестное количество похожих объектов в массив, к которому я мог бы получить доступ где-нибудь еще в программе.

Мой класс XMLParser имеет следующий метод синтаксического анализа (пока):

 -(void)parser:(NSXMLParser *)parser 
didStartElement:(NSString *)elementName 
 namespaceURI:(NSString *)namespaceURI 
qualifiedName:(NSString *)qName 
   attributes:(NSDictionary *)attributeDict {
 if (currentTextString) {
  [currentTextString release];
  currentTextString = nil;
 }
 if ([elementName isEqualToString:@"reference_number"]) {
  pdfDocument = [[PDFDocument alloc] init];
  pdfDocument.educationDocumentReference = currentTextString;
 } else if ([elementName isEqualToString:@"name"]) {
  pdfDocument.educationDocumentName = currentTextString;
 } else if ([elementName isEqualToString:@"type"]) {
  pdfDocument.educationDocumentType = currentTextString;
 } else if ([elementName isEqualToString:@"date"]) {
  pdfDocument.educationDocumentDate = [dateformatter dateFromString:currentTextString];
 } else if ([elementName isEqualToString:@"url"]) {
  pdfDocument.educationDocumentURL = currentTextString;
  [resultsMutableArray insertObject:pdfDocument atIndex:resultsArrayCount];
  resultsArrayCount  ;
 }
}
  

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

Каков правильный способ сделать что-то подобное? Кто-нибудь может указать мне здесь правильное направление? Я думаю, вопрос в том, могу ли я динамически называть объекты документа. Единственный вариант, который я нашел, — это создать временную таблицу и сохранить в ней информацию, а после того, как у меня будет вся информация, я сравню ее с моей таблицей постоянного хранения.

Ответ №1:

Создание временной таблицы, вероятно, было лучшим вариантом. Я настроил приложение на чтение xml со всеми данными и сохранение их во временной таблице. После загрузки я сравниваю с моей постоянной таблицей, и какая бы запись ни была помечена как измененная или новая, она будет сохранена как постоянная, а временная таблица будет очищена.