iOS下载前检查远程文件是否有更新

问题描述:

这是一个两部分问题。 我正在使用NSXMLParser下载RSS源。iOS下载前检查远程文件是否有更新

NSURL *url = [NSURL URLWithString:@"linktorssxml"]; 
parser = [[NSXMLParser alloc] initWithContentsOfURL:url]; 
[parser setDelegate:self]; 
[parser setShouldResolveExternalEntities:NO]; 
[parser parse]; 

我想知道是否有一种方法可以简单地远程读取XML的头和检查上次更新时间戳,这样我只需要运行解析器代码和实际拉动整个XML是否已经有变化?

此外,正如我所说,这是一个两部分问题。 我与外部托管的plist有同样的想法。这是目前被称为如下: -

_content = [[NSArray alloc] initWithContentsOfURL:[NSURL URLWithString:@"pathto.plist"]]; 

再次,是否有远程检查最后更新时间头的一种方式,因此只下载完整的文件,如果出现了变化?

是的,但您需要使用NSURLConnectionNSURLSession来下载数据,而不是要求NSXMLParser为您做。

通过使用NSMutableURLRequest来描述您想要的内容,您可以获得HTTP标头(可能包含最后修改日期)。这有一个名为setHTTPMethod:的方法,您可以将方法设置为HEAD。建立连接,获取标题,然后决定下一步做什么。

除非XML非常大,否则这可能不是最有效的方法。如果该文件已被修改,则只需发出第二个网络请求即可获取该文件。网络请求很慢,所以你应该把它们保持在最低限度。在大多数情况下,最好使用NSURLConnectionNSURLSession来获取文件。响应将包含HTTP标头,因此您仍然可以获取日期,并且您仍然可以决定是否运行解析器。

+0

非常感谢。你关于多次请求的观点是我关心检查的一个问题。感谢您的建议。出于兴趣,NSURLConnection/NSURLSession比NSXMLParser更快拉动数据吗?还是没有区别? – MrNeilM

+0

没有区别。限制是建立网络连接需要多长时间,以及传输数据需要多长时间。让'NSXMLParser'获得数据更方便,但不会更快或更慢。 –

+0

再次感谢。感谢你的帮助。 – MrNeilM