#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 со всеми данными и сохранение их во временной таблице. После загрузки я сравниваю с моей постоянной таблицей, и какая бы запись ни была помечена как измененная или новая, она будет сохранена как постоянная, а временная таблица будет очищена.