2016-09-03 4 views
0

나는 처음으로 nsurlcache입니다. 그리고 내 목표는 내 캐시 데이터를 먼저 표시하고이를 내 디스플레이에 표시 한 다음 네트워크에 액세스하고 캐시 데이터를 교체하고 디스플레이를 다시로드하려고합니다.처음에 캐시 데이터를로드하고 네트워크에서 데이터를로드하는 방법

mutableURLRequest.cachePolicy = NSURLRequestCachePolicy.ReturnCacheDataElseLoad 

누군가가 나를 도울 또는 나에게 어떻게 내 목표를 달성하기 위해 더 나은 아이디어를 줄 수 :

이것은 내가 사용하고 무엇입니까?

답변

1

첫 번째 가져 오기는 NSURLRequestReturnCacheDataDontLoad, 두 번째 가져 오기는 NSURLRequestUseProtocolCachePolicy이 필요하다고 생각합니다.

또는 캐시 자체를 요청할 수 있습니다.

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

확실하지 무엇에 해당 스위프트 코드는하지만, 희망 목표 - C 도움이 정도로 가깝습니다. :-)

+0

안녕하세요 @ dgatwood, 그래서 이것을 달성하기 위해 두 번 요청할 것입니다? –

+0

예. 첫 번째 캐시 된 데이터를 가져오고 두 번째 캐시 된 데이터는 실제 요청을 수행합니다. 캐시에서 오래된 데이터를 가져 오려면 특별히 요청해야하며 이렇게하면 서버에 연결되지 않습니다. – dgatwood

+0

나는 많은 사람들이 수년에 걸쳐 이것을 시도해 왔으며 일반적으로 사용자가보고있는 동안 컨텐츠를 업데이트하면 데이터가 고도로 구조화되어 있지 않는 한 나쁜 사용자 경험을 낳는다는 것을 알 수 있습니다. 대부분의 상황에서 더 나은 방법은 (부실 할 수있는) 캐시 데이터를 요청하고, 요청을 시작하고, 타이머를 시작하고, 타이머가 시작되기 전에 응답이 돌아 오면 타이머를 취소하고 실제 데이터를 표시하는 것입니다. 그렇지 않은 경우 캐싱 된 데이터를 표시하고 백그라운드에서 요청을 완료하게하지만 사용자가 페이지를 떠나서 다시 돌아올 때까지 새 데이터를 표시하지 마십시오. – dgatwood