有没有比我的实现更好的方法来检查新文件?

时间:2012-11-25 18:17:43

标签: objective-c ios nsstring nsfilemanager

我有一个应用程序可以下载每隔几个月更新一次的PDF,每次下载某个PDF时,我都会下载一个包含一个字符的.txt文件。每次我在服务器上上传更新的PDF时,我也会将服务器上.txt文件中的字符数增加一个。

当用户点击我的应用程序中的“更新”按钮时,我将服务器的.txt文件中的字符串与本地.txt文件的字符串进行比较。

这是一种非常轻量级的方法,可以检查新的PDF是否可用,但我问是否有更好的方法或更轻松的方法来执行此操作而无需为每个PDF文件创建.txt文件在我的服务器上?

提前感谢您提供任何帮助!

这是我用来检查新PDF的代码:

NSString *documentDirectory = [(AppDelegate *)[[UIApplication sharedApplication] delegate] applicationDocumentsDirectory];

NSString *path = [documentDirectory stringByAppendingPathComponent:@"test.txt"];

NSString *server = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"foo.com/test.txt"] encoding:NSASCIIStringEncoding error:nil];

NSString *local = [NSString stringWithContentsOfFile:path encoding:NSASCIIStringEncoding error:nil];

if(![local isEqualToString:server])
{
   // I Download the new PDF and the new .txt file here;
   // simple NSURLConnection stuff, no need to elaborate
}

1 个答案:

答案 0 :(得分:2)

在我的脑海中,HTTP HEAD方法可用于仅获取标头而不是数据。如果标题中的创建日期晚于您下载数据的最后日期,则可以获取新副本。这可以使用NSURLRequestNSURLConnection完成。

如果您的服务器不支持HEAD请求或其他东西阻止其使用,您可能会有第二个TXT文件,其中包含版本/哈希/唯一标识符。下载它并与存储的值进行比较。如果已更改,请下载完整的PDF并将版本文本文件保存到磁盘以供日后参考。

如果安全性存在问题且您需要能够信任服务器,请在任何一种情况下使用HTTPS。