2016-09-03 2 views
0

nsurlcacheを初めて使用しています。私の目標は、キャッシュデータを最初に表示してそれを私のディスプレイに表示することです。その後、ネットワークにアクセスし、キャッシュデータを置き換えてディスプレイをリロードします。最初にキャッシュデータをロードし、ネットワークからデータをロードする方法

これは私が使用しているものです:

mutableURLRequest.cachePolicy = NSURLRequestCachePolicy.ReturnCacheDataElseLoad 

誰かが私を助けたり、私にどのように私の目標を達成するためのより良いアイデアを与えることができますか?

答えて

1

最初のフェッチではNSURLRequestReturnCacheDataDontLoad、次に2番目のフェッチではNSURLRequestUseProtocolCachePolicyと思っています。

また、キャッシュ自体に問い合わせることもできます。

NSURLRequest *request = ... 
NSCachedURLResponse *response = [[NSURLCache sharedURLCache] cachedURLResponseForRequest:request]; 

同等のスウィフトコードが何であるかはっきりしないが、Objective-Cが助けてくれるほどうまくいけばうれしい。 :-)

+0

こんにちは@dgatwood、私はこれを達成するために2回要求しますか? –

+0

うん。最初のものはキャッシュされたデータを取得し、もう1つは実際の要求をワイヤで行います。失効したデータをキャッシュから取得する場合は、特に要求する必要があります。そうすることで、サーバーに接続することはありません。 – dgatwood

+0

私はまた、多くの人々がこれを長年にわたって試してきたことに言及するべきであり、通常、ユーザーがそれを見ている間にコンテンツを更新すると、(データが高度に構造化されていない限り)ほとんどの状況では、キャッシュデータを要求し、要求を開始し、タイマーを起動し、タイマーが起動する前に応答が返ってきたら、タイマーをキャンセルして実際のデータを表示する方がよいでしょう。そうでない場合は、キャッシュされたデータを表示し、要求をバックグラウンドで完了させますが、ユーザーがページを離れて戻ってくるまで新しいデータを表示しないでください。 – dgatwood

関連する問題