2011-10-26 7 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/how-to-make-an-progress-bar-for-an-nsurlconnection-download-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」までスクロールします。)

をするためにこのコードを完成させる方法の完全なドキュメントと実装する必要があるデリゲートメソッドについては、次の優秀なドキュメントを参照してください。

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

これは、プロセス全体を通して話します。

関連する問題