如果文件没有更改,请避免再次下载文件

时间:2012-04-09 04:23:48

标签: ios objective-c xml

我需要使用HTTP协议下载XML文件,以便在我的iPhone应用程序上本地使用它。有时,此文件将在服务器上更新,但不经常更新。

如何比较已下载的Documents文件夹中的文件与服务器上的文件,如果内容已在服务器上更新,则只下载它?

2 个答案:

答案 0 :(得分:12)

首次下载文件时,请保存响应的Last-Modified标头中的日期。您可以将其从NSHTTPURLResponse对象中拉出来。

在后续运行中,将该日期放在If-Modified-Since的{​​{1}}标题中。如果服务器上的文件未更改,NSURLRequest的{​​{1}}应为304(表示“未修改”),并且响应正文应为空。

答案 1 :(得分:2)

如果要遍历文档目录以查找特定命名的文件,请使用NSFileManager的-fileExistsAtPath:isDirectory并将其与下载文件的名称(-suggestedFilename进行比较,只要您使用NSURLResponse)与-isEqualToString

如果您需要获取修订日期,请将NSFileManager的-attributesOfItemAtPath:error:与密钥NSFileModificationDate结合使用。