Я понимаю, что это старый пост, но я все равно отвечу.
Вы обязательно должны проверить MagicRecord Саула Моры.Он сделал его простым в использовании в любом проекте, автоматически работает с ARC / non-ARC, и настройка CoreData - это одна строка.
Прежде всего, я покажу вам, как я анализирую и обновляю.
- (void)setUpBeforeParsing
{
self.currentAttributes = [NSMutableDictionary dictionary];
self.currentParsedCharacterData = [NSMutableString string];
self.currentParsedBatch = [NSMutableArray array];
self.attributesDictionary = myManagedObjectObject.entity.attributesByName;
}
- (void)parser:(NSXMLParser *)parser didStartElement...
{
for (NSString *attribute in self.attributesDictionary)
{
if ([elementName isEqualToString:attribute])
{
accumulatingParsedCharacterData = YES;
[self.currentParsedCharacterData setString:@""];
}
}
}
- (void)parser:(NSXMLParser *)parser didEndElement...
{
if ([elementName isEqualToString:@"myIdentifierThatObjectIsDone"])
{
[self.currentParsedBatch addObject:[self.currentAttributes copy]];
[self.currentAttributes removeAllObjects];
accumulatingParsedCharacterData = NO;
}
for (NSString *attribute in self.attributesDictionary)
{
if ([elementName isEqualToString:attribute])
{
accumulatingParsedCharacterData = NO;
[self.currentAttributes setObject:[self.currentParsedCharacterData copy] forKey:attribute];
}
}
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
if (self.accumulatingParsedCharacterData) [self.currentParsedCharacterData appendString:string];
}
- (void)parserDidEndDocument:(NSXMLParser *)parser
{
[MyCoreDataClass MR_importFromArray:self.currentParsedBatch];
}
На самом деле главное, что вы можете сделать из этого, это то, что вы можете создать массив словарей, которые содержат значения, которые выхотите перенести в ваши управляемые объекты.Парень по имени Том Харрингтон написал на cimgf.com демо-версию о присвоении имен свойствам вашего объекта так же, как возвращенные xml или json, и затем вы можете просто перебирать свои свойства, пока они не будут соответствовать возвращенному элементу xml.Прелесть здесь в том, что где-то внизу строки вы хотите сохранить больше возвращенного XML-кода в ваши объекты, просто добавьте свойство к вашему объекту, и парсер автоматически синхронизирует его.
В конце анализа вы будетеобратите внимание на метод класса, который называется, это из среды MagicalRecord.Пока вы устанавливаете 'relatedByAttribute' в информационной части пользователя вашей модели данных, он будет автоматически синхронизировать словари с вашими управляемыми объектами.Поэтому, если ваши объекты имеют уникальное идентифицирующее свойство, называемое «MyEntityId», то в пользовательском информационном словаре вашего набора сущностей «relatedByAttribute» - «MyEntityId» и MagicalRecord позаботится об этом.
Дайте мне знать, если вам нужноуточнение.