#iphone #xml #ios #caching #core-data
#iPhone #xml #iOS #кэширование #core-данные
Вопрос:
Как передать список слов в формате xml в базу данных «core data»?
И исходя из этого, каждый раз, когда ваше приложение загружается, как вы проверяете, обновлена ли эта база данных?
Комментарии:
1. Я думаю, вам нужно предоставить более подробную информацию о том, что вы делаете. Вопрос немного расплывчатый. Т.е. вы хотите выполнить сериализацию в базе данных core data? Или вы хотите обработать каким-либо другим способом. Какой сервер core data вы используете? и что вы подразумеваете под «актуальным»? с помощью чего?
2. Сначала вы узнаете, как создавать объекты в Core Data и управлять ими, а затем вы начнете думать о разборе XML в вашей модели.
3. есть список производителей, к которым я обращаюсь с сервера в формате xml, я хочу загрузить этот список и проанализировать его в базе данных core data sqlite, которая будет действовать как кэш при каждом последующем открытии приложения там. Тогда я хотел бы знать, какой наилучший способ проверить, обновлены ли новые данные в моей базе данных sqlite или примечание.
Ответ №1:
Вам нужно будет проанализировать входящий XML в виде строки. Если вы используете Mac, используйте NSXMLDocument… попробуйте что-то вроде этого:
NSString *yourXML = @""; // replace with your xml as nsstring
NSError *error;
NSXMLDocument *xmlDoc = [[NSXMLDocument alloc] initWithXMLString:yourXML options:0 error:amp;error];
if (error) NSLog(@"Error parsing xml: %@", [error description]);
И затем вы могли бы проанализировать каждый интересующий вас элемент, используя запрос XPath, подобный этому:
NSArray *items = [xmlDoc nodesForXPath:@"//yourItem" error:amp;error];
И тогда вы могли бы аналогичным образом зациклить каждый отдельный элемент для его свойств в формате xml.
Затем извлеките элемент в соответствии с одним или несколькими ключевыми свойствами, которые у вас есть в вашем xml, и проверьте, есть ли они уже там.
Я предлагаю вам взглянуть на этот пост http://objectivesheep.com/archive/core-data-active-record-sheepdata / для упрощения управления вашими объектами core data. В этом случае у вас просто было бы что-то вроде:
if ([YourManagedObject checkIfEntityExistsWhereProperty:@"yourKeyProperty" equalsValue:keyValueFromXML]) ....
Надеюсь, это поможет.