gpt4 book ai didi

iphone - 使用 stringWithContentsOfURL 缓存将 url 内容写入字符串

转载 作者:搜寻专家 更新时间:2023-10-30 20:22:08 25 4
gpt4 key购买 nike

我的代码是从我的网络服务器上的 xml 文件写入 url 的内容,并将内容存储在一个字符串中,然后将其写入文档目录中的本地文件。当我第一次加载它时,一切都很好,之后即使我再次运行这个 View ,它也总是会得到已经缓存在设备上的内容,并且没有来自网络服务器的更新。

如何强制它每次都从服务器上的文件中读取内容?

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];

最佳答案

您可以使用 NSURLRequestNSURLConnection 下载字符串(这实际上是一种更好的处理方式 - 异步 - 您还可以反馈进度(http://stackoverflow.com/questions/2267950/how-to-make-an-progress-bar-for-an-nsurlconnection-when-downloading-a-file)。

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”。)

有关如何完成此代码的完整文档(以及您需要实现的必要委托(delegate)方法),请参阅优秀文档:

http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/URLLoadingSystem/Tasks/UsingNSURLConnection.html

它将引导您完成整个过程。

关于iphone - 使用 stringWithContentsOfURL 缓存将 url 内容写入字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7903754/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com