Я хочу использовать AlamofireImage для загрузки изображений с URL-адреса, а затем кэшировать их на диске устройства. Я прочитал несколько сообщений об этом и узнал, что AlamofireImage поддерживает это с помощью ImageDownloader. Самая интересная информация была дана в этом ответе SO
Поэтому я попытался установить собственный NSURLCache для ImageDownloader, чтобы он кэшировал изображения непосредственно на диск. Я сделал это, установив объем памяти равным 0. Затем я использую этот пользовательский ImageDownloader для загрузки изображения. Папка, которую я указал для пути к диску, создается на диске, но, к сожалению, она остается пустой, и изображение никак не кэшируется.
** Редактировать: ** Важно отметить, что кэшированные ответы сохраняются не в папке в каталоге caches, а в файле базы данных рядом с папкой.
Может ли кто-нибудь сказать мне, что я делаю неправильно здесь? Большое спасибо за чтение!
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
}
}
}