2012-05-12 16 views
1

私のサーバー上の.txtからテキストをダウンロードするテキストビューがあります。唯一の問題は、それが一度だけです。つまり、.txtファイルを更新するかどうかにかかわらず、テキストは変更されません。ここで NSURLにタイムスタンプを追加

はTextViewのためのコードです:

- (void)viewDidLoad 

{NSError *error = nil; 
NSURL *myurl = [NSURL URLWithString:@"http://www.myserver.com/test.txt"]; 
NSString *mystring = [NSString stringWithContentsOfURL:myurl encoding:NSUTF8StringEncoding error:&error]; 
newtext.text = mystring; 
} 

それはそのたびにサーバーをチェックするようにする方法を見つけ出すように見えることはできませんアプリの実行(とちょうどそれが初めて見つけたものをキャッシュしません) 。これは、シミュレータと実際のiPhoneでも発生します。

ありがとうございました!

答えて

0

便利なメソッドstringWithContentsOfURLでキャッシュポリシーを設定できるとは思いません。私が間違っていると誰かが私を修正します。

良いニュースは、これは非常に簡単に修正できることです。独自のリクエストを作成し、キャッシュポリシーをNSURLRequestReloadIgnoringLocalCacheDataに設定するだけです。

NSURL *myurl = [NSURL URLWithString:@"http://www.myserver.com/test.txt"]; 
NSURLRequest *request = [NSURLRequest requestWithURL:myurl 
             cachePolicy:NSURLRequestReloadIgnoringLocalCacheData 
            timeoutInterval:60.0]; 

NSURLConnection *connection= [[NSURLConnection alloc] initWithRequest:request 
                  delegate:self]; 

次に、デリゲートのテキストビューを設定します。一日の終わりに、これはとにかく便利な方法がやっていることです。

+0

返信いただきありがとうございます!あなたのコードを組み込もうとしましたが、デリゲートでテキストビューを設定する方法を理解できていませんか? – Homeoftheben

+0

サンプルのNSURLConnection実装については、ここを参照してください。 connectionDidFinishLoadingメソッドでテキストビューを設定するだけです。 http://stackoverflow.com/questions/2124421/are-there-complete-examples-that-make-use-of-all-the-nsurlconnection-delegate-me – Joel

+0

OK!私にはこれがすべて動作しますが、コンピュータのブラウザで最初にtxtファイルを表示し、cntrlを押してリフレッシュ(ページのブラウザのキャッシュをクリアして強制的にリロードする)した場合にのみ動作します。その後、(そしてそのときだけ)iPhoneは新しいテキストを引っ張ります。私は私の心を失ったように感じますが、それは動作します!すべての助けをありがとう! – Homeoftheben

0

HTTPキャッシュは、HTTPヘッダーCache-Controlによって制御されます。テキストファイルが頻繁に変更される場合は、適切なヘッダーを出力するようにサーバーを構成する必要があります(例:Cache-Control: no-cache)。詳細はMark Nottingham's caching tutorialをご覧ください。

+0

お返事ありがとうございます!ヘッダーセットキャッシュコントロール "max-age = 1、public、must-revalidate" "ただし、テキストフィールドは、次のように編集します。新しいtxtファイルの内容は読み込まれません。 – Homeoftheben

+0

カールのようなツールを使って手動でリクエストを実行してヘッダーが有効であることを確認しましたか?チャールズのようなプロキシを使って、あなたのアプリケーションが以前からキャッシュされたバージョンを使用していないことを確認しましたか? *キャッシュを有効にするHTTPヘッダーを選んでいるのはなぜですか?キャッシュを完全に無効にするヘッダーで試してみましたか? – Jim

+0

こんにちは!私はキャッシュを完全に無効にするためにhtaアクセスファイルを変更しました: ' ヘッダ未設定キャッシュコントロール 'しかし、それはCurlで動作しているかどうかを確認する方法がわかりません。私はシミュレータ内でコンテンツと設定をリセットしましたが、それでも古いtxtファイルの内容を表示しているようです。 – Homeoftheben

関連する問題