我有一个集合视图,显示XML Feed的结果。它运行良好,但我需要在本地保存XML提要的结果(例如,如果没有可用的Internet连接)。
我知道如何在本地保存原始Feed,但我认为我真正需要做的是通过XML Feed中的项目进行迭代并将每个项目保存为NSData项目。
这是考虑它的正确方法,还是您有任何有用的建议或提示?
- (void)startParsing
{
NSXMLParser *xmlparser = [[NSXMLParser alloc] initWithContentsOfURL:[NSURL URLWithString:@"http://images.apple.com/main/rss/hotnews/hotnews.rss#sthash.TyhRD7Zy.dpuf"]];
[xmlparser setDelegate:self];
[xmlparser parse];
if (_marrXMLDataCollection.count != 0) {
// Save XML to NSData items in background?
[self.collectionView reloadData];
}
}
以下是Feed的示例,我将其作为localdata.plist
存储在Documents目录中:
(
{
link = "\nhttp://www.apple.com/pr/library/2016/04/26Apple-Reports-Second-Quarter-Results.html?sr=hotnews.rss";
pubDate = "\nTue, 26 Apr 2016 14:44:21 PDT";
title = "\nApple Reports Second Quarter Results";
},
{
link = "\nhttp://www.apple.com/final-cut-pro/in-action/trim-editing/?sr=hotnews.rss";
pubDate = "\nWed, 20 Apr 2016 10:05:59 PDT";
title = "\n\nFinal Cut Pro X helps small company delight world\U2019s biggest clients";
},
{
link = "\nhttp://www.apple.com/ipad-pro/?sr=hotnews.rss";
pubDate = "\nMon, 21 Mar 2016 12:00:03 PDT";
title = "\n\nApple Introduces 9.7-inch iPad Pro";
},
{
link = "\nhttp://www.apple.com/iphone-se/?sr=hotnews.rss";
pubDate = "\nMon, 21 Mar 2016 11:58:09 PDT";
title = "\n\nApple Introduces iPhone SE \U2014 the Most Powerful Phone with a 4-inch Display";
},
答案 0 :(得分:1)
您可以将XML直接保存到文件中,可以是二进制数据或文本。您不需要打开它并将其转换为任何东西。稍后您可以加载罚款并重新运行解析代码。这是最少的代码选项。它的运行时间更加昂贵,但除非你的XML文件相当大,否则你不会注意到差异。
如果要保存已处理的内容,则应将XML转换为模型对象数组,并且可以在这些模型对象上实现NSCoding
以允许将其存档到磁盘。这应该是更高的运行时效率,但也是更多的代码。