2011-10-26 62 views
3

我的代碼是從我的Web服務器上的xml文件寫入url的內容,並將內容存儲在字符串中,然後將其寫入文檔目錄中的本地文件。當我第一次加載它時,一切都很順利,即使我再次運行這個視圖時,它總是會獲取已經在設備上緩存的內容,並且沒有更新來自Web服務器。使用stringWithContentsOfURL將url內容寫入字符串緩存

如何執行它以便每次從服務器上的文件讀取內容?

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

在你的程序中,你在上面的代碼段做了什麼?您可能還想檢查writeToFile可以返回的錯誤對象。 – onnoweb

回答

2

你可以使用NSURLRequestNSURLConnection(這實際上是做事情的更好的方式下載串 - 異步 - 而你也可以在進度反饋(http://stackoverflow.com/questions/2267950 /如何對化妝的,進度條換一個-NSURLConnection的 - 當 - 下載 - 一個文件))。

NSURLRequest可以更好地控制要使用的緩存策略。

你會設置你的NSURLRequest如下:(向下滾動到「NSURLRequestCachePolicy」如果你要選擇不同的策略)

NSURLRequest *request=[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://my-domain-name.com/myGlobalFile.xml"] cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:60.0]; 

你可以用值代替NSURLRequestReloadIgnoringLocalCacheDatahttp://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSURLRequest_Class/Reference/Reference.html

對於如何完成此代碼的完整文檔(以及您需要實施的必要代理方法),請參閱以下優秀文檔:

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

這將在整個過程中說說你。