2012-04-09 5 views
0

In meinem Code, ich alle Bilder am Anfang des Lebenszyklus der Anwendung Download bereit:Wie speichere ich mit ASIHTTPDownloadCache?

[ASIHTTPRequest setDefaultCache:[ASIDownloadCache sharedCache]]; 

    NSURL *url = [NSURL URLWithString:[item imagePath]]; 
    __block ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; 
    [request setCompletionBlock:^{ 
    //NSData *responseData = [request responseData]; 
    //[iw setImage: [UIImage imageWithData:responseData] forState:UIControlStateNormal]; 
}]; 

[request setFailedBlock:^{ 
    // NSError *error = [request error]; 
    //[iw setImage:nil forState:UIControlStateNormal];   
}]; 

[request setCacheStoragePolicy:ASICachePermanentlyCacheStoragePolicy]; 
    [request startSynchronous]; 
}];     

Alle Bildnamen eindeutig sind. Und sie ändern sich nicht häufig. Was ich brauche, ist, das Bild auch nach Beendigung der Anwendung im Cache zu behalten. Und wenn ich die Anwendung erneut öffne, liest sie es aus dem heruntergeladenen Cache.
Ist es möglich?

Antwort

0

Dies ist in der Tat möglich. Ihre Cache-Speicherrichtlinie ist bereits korrekt.

Sie müssen auch um eine individuellen Cache-Regeln festlegen, finden Sie hier http://allseeing-i.com/ASIHTTPRequest/How-to-use#about_cache_policies

Das Wichtigste ist, das Datenablaufdatum zu kümmern. Im Standardmodus kümmert sich ASIHTTPRequest um das Ablaufdatum, und wenn die Daten abgelaufen sind, werden die Daten erneut geladen. Aus meiner Erfahrung gibt der Server oft kein geeignetes Ablaufdatum an, also erwägen Sie die Verwendung von ASIOnlyLoadIfNotCachedCachePolicy.

Sie können das Ablaufdatum auch selbst angeben, wenn Sie möchten (dies könnte für Sie noch interessanter sein, da sich Ihre Bilder manchmal ändern). Folgen Sie meinem Link, alle benötigten Informationen sind dort (siehe "Weitere cache-bezogene Funktionen").

Oh und noch etwas: ASIHTTPRequest ist nicht mehr aktuell mehr. Der Entwickler hat das Projekt aufgegeben. Daher unterstützt ASIHTTPRequest ARC nicht. Wenn Sie können, wechseln Sie zu einem anderen Framework wie AFNetworking oder RestKit.

+0

Wirklich? Ok, dann kann ich zu AFNetworking wechseln. Vielen Dank. – Burak

+0

Hallo nochmal. Ich wechselte zu AFNetworking. Nun, was soll ich tun, um alle Magier beim Starten der Anwendung in den Cache zu laden und sie dann in der App aus dem Cache zu verwenden? – Burak

+0

Sie können NSURLCache (es funktioniert zusammen mit UIImageView (AFNetworking) Category) oder manuell ein persistentes Cache-Modul (siehe Diskussion hier: http://stackoverflow.com/questions/7529258/what-major-asihttprequest-features-is) verwenden -afnetworking-fehlt). Wenn Sie Probleme beim Zwischenspeichern mit AFNetworking/NSURLCache haben, suchen Sie nach SO oder öffnen Sie eine andere - richtig markierte - Frage – JiaYow