| 

.NET C# Java Javascript Exception

2
Hallo liebe codekicker,

leider habe ich in einem anderem Forum noch keine Antwort auf meine Frage vor einigen Tagen erhalten, deshalb versuche ich bei euch mal mein Glück.

Ich bin aktuell dabei, mich etwas in Xcode und dem iOS SDK einzuarbeiten (ich nutze noch iOS4 und Xcode 4.1, welches ich auch erstmal nicht aktualisieren möchte). Hierbei habe ich schon einige Tutorials angeschaut und selbst einige Funktionen getestet und damit herumgespielt bzw. getestet.

Ich möchte gerne in einem UIWebView eine PDF anzeigen lassen. Das funktioniert soweit auch ohne Probleme, ich habe das UIWebView eingebunden und im m-File folgenden Code eingefügt:

- (void)viewDidLoad {    
[webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.adresse.de/test_kw43.pdf"]]];
}


Nun wird bei jedem Aufruf die PDF neu heruntergeladen und im UIWebView angezeigt. Jetzt habe ich mir aber gedacht, dass es ja sinnvoller wäre, im Vorfeld zu prüfen, ob es überhaupt eine neue PDF gibt, wenn ja, soll die neue PDF heruntergeladen werden, wenn nicht soll die PDF aus dem iPhone Filesystem im UIWebView geladen werden.

Leider habe ich hierfür noch keine Möglichkeit gefunden bzw. keine Idee wie ich das genau anstellen kann. Ist das überhaupt möglich?

Kurz noch mal die Schritte wie ich es mir vorstelle:

  • Prüfen, ob die PDF im iPhone Filesystem liegt
  • wenn eine PDF vorhanden ist, die Angabe des Dateinamens prüfen z.B. test_kw43 < test_kw44
  • wenn es eine neuere Datei an der angegebenen Adresse gibt: alte Datei löschen; neue Datei herunterladen; im Filesystem speichern; im UIWebView anzeigen
  • wenn die Datei aktuell ist: Datei aus Filesystem laden und im UIWebView anzeigen
    wenn keine PDF vorhanden ist, Datei herunterladen, im Filesystem speichern und im UIWebView anzeigen

Kann man die beschriebenen Schritte irgendwie bewerkstelligen? Ich möchte natürlich keine komplette Lösung für mein Problem, aber vielleicht könnt ihr mir einige Tipps geben.

Vielen Dank für Eure Hilfe
News:
06.11.2011
nudelholz8 35 4
1 Antwort
2
Du kannst es mal damit versuchen

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:urlString] cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval: 10.0];

siehe auch diese Antwort. Anscheinend merkt die UIWebView aber nicht, ob eine Datei aktualisiert wurde. Normalerweise zeigt das auch der Server über die Cache Policy an. Du hast ja sonst keine Chance clientseitig eine Aktualisierung festzustellen ohne die Datei herunterzuladen.
Du kannst es natürlich so machen wie du selbst vorgeschlagen hast und einen Dateinamen mit einer Datumskomponente bilden. Dann sollte es mit NSURLRequestReturnCacheDataElseLoad funktionieren. Also irgendwie so:

NSDate *today = [NSDate date]; 
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"ww"];
NSString *weeknumber = [dateFormat stringFromDate: today];
NSString *url = [NSString stringWithFormat:@"http://www.meineSeite.de/pdfderWoche%@.pdf", weeknumber];
// ...

Damit kannst du es dir auch sparen manuell die Dateíen zu speichern bzw. laden.
Hoffe das hilft erst einmal weiter,
Daniel
07.11.2011
puls200 3,8k 7

Stelle deine Iphone-Frage jetzt!