2016-09-03 4 views
0

Ich bin neu in nsurlcache. Und mein Ziel ist es, zuerst meine Cache-Daten zu zeigen und sie meinem Display zu zeigen, und danach möchte ich auf das Netzwerk zugreifen und die Cache-Daten ersetzen und meine Anzeige neu laden.So laden Sie zuerst die Cachedaten und laden Daten aus dem Netzwerk nach

Dies ist, was ich verwende:

mutableURLRequest.cachePolicy = NSURLRequestCachePolicy.ReturnCacheDataElseLoad 

Kann mir jemand helfen oder geben Sie mir eine bessere Vorstellung davon, wie mein Ziel zu erreichen?

Antwort

1

Ich denke, Sie wollen NSURLRequestReturnCacheDataDontLoad für den ersten Abruf, dann NSURLRequestUseProtocolCachePolicy für den zweiten Abruf.

Oder Sie können den Cache selbst fragen.

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

Nicht sicher, was der entsprechende Swift-Code ist, aber hoffentlich ist das Objective-C nahe genug, um zu helfen. :-)

+0

Hallo @dgatwood, also werde ich zweimal um dies zu erreichen? –

+0

Ja. Der erste, um die zwischengespeicherten Daten zu erhalten und der zweite, um die eigentliche Anfrage über die Leitung zu stellen. Wenn Sie veraltete Daten aus dem Cache abrufen möchten, müssen Sie explizit danach fragen. Auf diese Weise wird der Server nie kontaktiert. – dgatwood

+0

Ich sollte auch erwähnen, dass viele Leute dies im Laufe der Jahre versucht haben, und normalerweise finden sie, dass die Aktualisierung des Inhalts, während ein Benutzer es betrachtet, zu einer schlechten Benutzererfahrung führt (es sei denn, die Daten sind stark strukturiert). In den meisten Situationen besteht ein besserer Ansatz darin, die (potenziell veralteten) Cache-Daten anzufordern, die Anforderung zu starten, einen Zeitgeber zu starten, und wenn die Antwort vor dem Zünden des Zeitgebers zurückkommt, den Zeitgeber abzubrechen und die echten Daten anzuzeigen. Ist dies nicht der Fall, zeigen Sie die zwischengespeicherten Daten an und lassen Sie die Anforderung im Hintergrund abschließen, aber zeigen Sie die neuen Daten erst an, wenn der Benutzer die Seite verlässt und zurückkehrt. – dgatwood

Verwandte Themen