我的代码是从我的Web服务器上的xml文件中写入url的内容,并将内容存储在字符串中,然后将其写入文档目录中的本地文件。当我第一次加载它时,一切都很顺利,之后即使再次运行此视图,它也将始终获取已经缓存在设备上的内容,并且没有来自Web服务器的更新。
如何强制它每次都从服务器上的文件中读取内容?
NSString * path = @"http://my-domain-name.com/myGlobalFile.xml";
NSString * myStr = [NSString stringWithContentsOfURL:[NSURL URLWithString:path] encoding:NSUTF8StringEncoding error:nil];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
localFilePath = [documentsDirectory stringByAppendingPathComponent:@"myLocalFile.xml"];
[myStr writeToFile:localFilePath atomically:YES encoding:NSUTF8StringEncoding error:nil];
答案 0 :(得分:2)
您可以使用NSURLRequest
和NSURLConnection
下载字符串(这实际上是一种更好的处理方式 - 异步 - 您还可以反馈进度(http:// stackoverflow)的.com /问题/ 2267950 /如何对化妆的-进度条换一个-NSURLConnection的-时的下载-A-文件))。
NSURLRequest
可以更好地控制您要使用的缓存策略。
您可以按如下方式设置NSURLRequest
:
NSURLRequest *request=[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://my-domain-name.com/myGlobalFile.xml"] cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:60.0];
您可以使用http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSURLRequest_Class/Reference/Reference.html中的值替换NSURLRequestReloadIgnoringLocalCacheData
(如果您想选择其他政策,请向下滚动到“NSURLRequestCachePolicy”。)
有关如何完成此代码的完整文档(以及您需要实现的必要委托方法),请参阅以下优秀文档:
会告诉你整个过程。