ASIHTTPRequest ist eine Bibliothek, die HTTP-Anfragen und eine Reihe von intuitiven Prüfungen (wie Proxy-Authentifizierung, Caching usw.) in einer Klasse kapselt, die eine Erweiterung von NSURLRequest
. Ich empfehle die Verwendung dieser Option. Sie können eine Caching-Richtlinie aus den möglichen Optionen auswählen aquí . Es sieht so aus, als wollten Sie ASIAskServerIfModifiedCachePolicy
das immer den Server fragt, ob es eine neuere Version gibt und nur dann herunterlädt, wenn es eine neuere Version gibt (es prüft Last-Modified:
sowie andere Kopfzeilen). Sie können diese Caching-Richtlinie auch kombinieren mit ASIFallbackToCacheIfLoadFailsCachePolicy
so dass im Falle einer fehlgeschlagenen Kontaktaufnahme mit dem Server die zuletzt gespeicherte Version weiter verwendet wird.
Beispiel-Code:
#import "ASIHTTPRequest.h"
#import "ASIDownloadCache.h"
/* doing the actual check. replace your existing code with this. */
ASIHTTPRequest *request = [[ASIHTTPRequest alloc] initWithURL:myTxtFileURL];
[request setDownloadCache:[ASIDownloadCache sharedCache]];
[request setCachePolicy:ASIAskServerIfModifiedCachePolicy|ASIFallbackToCacheIfLoadFailsCachePolicy];
[request setCacheStoragePolicy:ASICachePermanentlyCacheStoragePolicy];
[request startSynchronous];
NSString *latestText = [request responseString];
[request release];
Beachten Sie, dass ich nur [request startSynchronous]
weil es einfach ist, einen Beispielcode einzufügen. Sie sollten verwenden:
[request setDelegate:self]
und implementieren dann die ASIHTTPRequestDelegate
Protokoll in der aktuellen Klasse irgendwo zu behandeln requestFinished:
y requestFailed:
, oder
-
Ein Block, den Sie mit
[request setCompletionBlock:^
{
/* code to run after the download finishes */
}];
[request setFailedBlock:^
{
/* code to run if the download failed */
}];
Beides muss geschehen, bevor [request startSynchronous]
und dann müssen Sie die startSynchronous
a startAsynchronous
. Unter diesem Link finden Sie weitere Informationen über die " Wie man es benutzt Registerkarte ".
Editar: Sie sagen, Sie wollen die Dateien selbst vergleichen. Ich weiß nicht genau, was Sie wollen, aber wenn Sie den Inhalt der alten Datei mit dem Inhalt der neuen Datei vergleichen wollen, müssen Sie zunächst eine Kopie des Textes der alten Datei erstellen. Um dies zu tun:
ASIHTTPRequest *request = [[ASIHTTPRequest alloc] initWithURL:myTxtFileURL];
[request setDownloadCache:[ASIDownloadCache sharedCache]];
[request setCachePolicy:ASIAskServerIfModifiedCachePolicy|ASIFallbackToCacheIfLoadFailsCachePolicy];
[request setCacheStoragePolicy:ASICachePermanentlyCacheStoragePolicy];
NSStringEncoding encoding;
NSError *error = nil;
NSString *oldText =
[NSString stringWithContentsOfFile:[[ASIDownloadCache sharedCache] pathToCachedResponseDataForRequest:request]
usedEncoding:encoding
error:&error];
[request startSynchronous];
NSString *newText = [request responseString];
[request release];
/* now compare the NSString oldText to newText however you like. */
Um ein guter Programmierer zu werden, muss man in der Lage sein, die verfügbare Dokumentation und Ressourcen zu nutzen und zu erforschen. Ich schlage vor, dass Sie die Dokumentation, auf die ich verlinkt habe, lesen, die Dokumentation von Apple zu iOS lesen oder eine Google-Suche für Ihre nächste Frage durchführen. Der Abschnitt über den Vergleich von Zeichenketten in der Dokumentation von Apple lautet aquí .
0 Stimmen
Mit welchem Teil haben Sie Probleme? Welche Teile funktionieren?
0 Stimmen
Ich bin in der Lage, die Zeichenfolge aus der lastModified-Header von der Website zu bekommen, aber ich bin sehr unsicher, wie man diese mit der Datei innerhalb des iPhone (.txt-Datei) zu vergleichen.