Chcę użyć AlamofireImage, aby pobrać obrazy z adresu URL, a następnie umieścić je w pamięci podręcznej na dysku urządzenia. Przeczytałem kilka postów na ten temat i okazało się, że AlamofireImage obsługuje to przy pomocy klasy ImageDownloader. Najciekawsza informacja została podana in this SO answer Pamięć podręczna dysku AlamofireImage nie działa
Tak więc próbowałem ustawić niestandardowy NSURLCache dla ImageDownloader tak, aby buforował obrazy bezpośrednio na dysk. Zrobiłem to, ustawiając pojemność pamięci na 0. Następnie używam tego niestandardowego programu ImageDownloader, aby pobrać obraz. Folder określony dla ścieżki dysku jest tworzony na dysku, ale niestety pozostaje pusty i obraz nie jest w żaden sposób buforowany.
** Edycja: ** Należy zauważyć, że buforowane odpowiedzi nie są zapisywane w folderze w katalogu pamięci podręcznych, ale w pliku bazy danych obok folderu.Czy ktoś może mi powiedzieć, co robię źle tutaj? Wielkie dzięki za przeczytanie!
func diskImageDownloader(diskSpaceMB: Int = 100) -> ImageDownloader {
let diskCapacity = diskSpaceMB * 1024 * 1024
let diskCache = NSURLCache(memoryCapacity: 0, diskCapacity: diskCapacity, diskPath: "alamofireimage_disk_cache")
let configuration = NSURLSessionConfiguration.defaultSessionConfiguration()
configuration.URLCache = diskCache
let downloader = ImageDownloader(configuration: configuration)
UIImageView.af_sharedImageDownloader = downloader
return downloader
}
func getProfileImage(atURL url: String, onComplete: SRServiceResponse<UIImage> -> Void) {
guard let imageURL = NSURL(string: url) else
{
// TODO: Fail here
return
}
let request = NSURLRequest(URL: imageURL)
let imageDownloader = self.diskImageDownloader()
imageDownloader.downloadImage(URLRequest: request) { (response) in
switch response.result
{
case .Success(let image):
// Do something
case .Failure(let error):
// Do something
}
}
}
Dzięki za odpowiedź. W rzeczywistości w odpowiedzi na obraz brakowało nagłówka maksymalnego wieku. Należy również zauważyć, że buforowane odpowiedzi nie są zapisywane w folderze w katalogu pamięci podręcznych, ale w pliku bazy danych obok folderu. –