【问题标题】:how to pass xml results to core data object如何将xml结果传递给核心数据对象
【发布时间】:2011-08-30 19:32:11
【问题描述】:

如何将 xml 格式的单词列表传递到“核心数据”数据库?

因此,每次您的应用程序加载时,您如何检查该数据库是否是最新的?

【问题讨论】:

  • 我认为你需要提供更多关于你在做什么的细节。问题有点模糊。 IE。你想序列化到核心数据数据库吗?还是您想以其他方式处理。您使用的是哪种核心数据后端? “最新”是什么意思?用什么?
  • 您首先学习了如何在 Core Data 中创建和管理对象,然后然后您开始考虑将 XML 解析到您的模型中。
  • 有一个我从 xml 格式的服务器访问的制造商列表,我想下载该列表并将其解析到核心数据 sqlite 数据库,每个都将充当缓存之后应用程序在那里打开的时间。然后我想知道检查我的sqlite数据库中的新数据是否是最新的或注释的最佳方法是什么。

标签: iphone xml ios caching core-data


【解决方案1】:

您需要将传入的 XML 解析为字符串。如果你在 Mac 上使用 NSXMLDocument... 试试这样的:

NSString *yourXML = @""; // replace with your xml as nsstring

NSError *error;
    NSXMLDocument *xmlDoc = [[NSXMLDocument alloc] initWithXMLString:yourXML options:0 error:&error];
    if (error) NSLog(@"Error parsing xml: %@", [error description]);

然后您可以使用这样的 XPath 查询解析您感兴趣的每个项目:

NSArray *items = [xmlDoc nodesForXPath:@"//yourItem" error:&error];

然后您同样可以循环每个项目的 xml 格式属性。

然后根据您在 xml 中的一个或多个关键属性获取一个项目,并检查它们是否已经存在。

我建议您查看http://objectivesheep.com/archive/core-data-active-record-sheepdata/ 这篇文章,以更轻松地管理您的核心数据对象。在这种情况下,您只会有类似的东西:

if ([YourManagedObject checkIfEntityExistsWhereProperty:@"yourKeyProperty" equalsValue:keyValueFromXML]) ....

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多