0

Mein iPhone App hat eine Info-Seite, die eine UIWebView enthält, die ich auf meiner Website der Info-Seite hingewiesen haben:iPhone: Extrahieren von Text aus und Datenträger-Cache der abgerufenen Webseite

NSString *urlAddress = @"http://www.toneme.org/Software"; 
NSURL *url = [NSURL URLWithString: urlAddress]; 
NSURLRequest *requestObj = [NSURLRequest requestWithURL: url]; 

[self.webView loadRequest:requestObj]; 

jedoch jedes Mal, Wenn der Benutzer die App lädt, wird für lange Zeit ein leerer Bildschirm angezeigt, bis die Daten abgerufen werden. Das ist nicht gut.

Es wäre viel besser, die zuletzt geladene Seite anzuzeigen, während versucht wird, eine neue Version im Hintergrund zu holen. Aber ich kann nicht sehen, wie man das sauber macht. Könnte mich jemand fangen lassen?

Eine zweite Frage: Für das iPhone ist es nicht praktisch, diese Webseite in einem UIWebView anzuzeigen, da die Webseite drei Fenster enthält; das Ganze wird einfach nicht passen. Ich möchte den Text wirklich von der Seite extrahieren. Gibt es einen sauberen Weg, dies zu tun? Kann ich angeben, dass ich nur den Hauptteil herunterladen möchte?

ich die ganze Seite bin zu raten, wird als eine einzelne Zeichenfolge zurückgegeben, so vielleicht, wenn ich ein paar hausgemachter Tags um meinen Text passen, das den Text manuell Extrahieren vereinfachen würde ...

Antwort

1

ein HTTP-API Stellen welches den Text in irgendeinem Format zur Verfügung stellt, das Sie analysieren können (dh JSON, XML), das Ihnen erlaubt, diese Daten herunterzuladen, es lokal zu speichern (mehr auf diesem in einer Sekunde) und eine Ansicht von diesen gedownloadeten Daten zu konstruieren, um nett anzuzeigen und schön. :)

In Bezug auf das Speichern der Daten, schauen Sie sich eine Klasse an, die die Daten im Dokumentenverzeichnis Ihrer Anwendung speichert, und behandelt die Server-http-Header-Informationen, um zu sehen, ob die Datei erneut heruntergeladen werden muss. oder wenn es bereits auf dem neuesten Stand ist (dies kann idealerweise mit Etags geschehen, aber mit dem Datum der letzten Änderung, wenn Etags in Ihrer Infrastruktur nicht unterstützt werden).

1

Da dies selbst zu tun sicherlich möglich, aber einiges an Arbeit richtig zu machen, mögen Sie vielleicht AsiHTTPRequest überprüfen und vor allem ASIWebPageRequest

HTH

0

Sie in der Lage sein sollten, die UIWebView Inhalte zu speichern und die URL-Daten für die Wiederverwendung in der delegierten webViewDidFinishLoad-Methode mithilfe von

NSString *myHtml = [webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.outerHTML"];