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

标签 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
}

最佳答案

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

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

如果安全是个问题并且您需要能够信任服务器,则在任何一种情况下都使用 HTTPS。

关于objective-c - 有没有比我的实现更好的方法来检查更新的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13553964/

相关文章:

iphone - 为什么我的 NSRange 总是 0?

ios - NSFileManager 如何返回文件路径的文件夹名称

objective-c - 在 AppDelegate 中存储、访问和编辑字符串

iphone - 我如何更改 UILocalNotification 中的 UserInfo?

ios - iOS 应用进入后台时需要 youtube 音频继续播放

ios - 如何在 ios 中管理 facebook 集成中的 session

ios - TableView 的属性检查器中的标识符在哪里?

iOS:从带有 M8 芯片的 iPhone 6 获取当前大气压力

objective-c - 初学者哪个更容易 : RubyCocoa or ObjC/Cocoa

ios - 在NSString中的句号或问号前修剪空格