मैं एक यूआरएल से छवियों को डाउनलोड करने के लिए AlamofireImage का उपयोग करना चाहता हूं और फिर इसे डिवाइस डिस्क स्थान पर कैश करना चाहता हूं। मैंने इसके बारे में कई पोस्ट पढ़ी और पाया कि अलामोफायर इमेज ImageDownloader कक्षा की सहायता से इसका समर्थन करता है। सबसे दिलचस्प जानकारी in this SO answerAlamofireImage डिस्क कैश काम नहीं कर रहा
इसलिए मैंने ImageDownloader के लिए कस्टम NSURLCache सेट करने का प्रयास किया ताकि यह छवियों को सीधे डिस्क पर कैश कर सके। मैंने स्मृति क्षमता को 0 पर सेट करके किया था। फिर मैं एक छवि डाउनलोड करने के लिए इस कस्टम ImageDownloader का उपयोग करता हूं। डिस्क पथ के लिए निर्दिष्ट फ़ोल्डर डिस्क पर बनाया गया है लेकिन दुर्भाग्यवश यह खाली रहता है और छवि किसी भी तरह से कैश नहीं होती है।
** संपादित करें: ** यह ध्यान रखना महत्वपूर्ण है कि कैश निर्देशिका में फ़ोल्डर में कैश किए गए प्रतिसाद सहेजे नहीं जाते हैं बल्कि फ़ोल्डर के बगल में डेटाबेस फ़ाइल में सहेजे जाते हैं।
क्या कोई मुझे बता सकता है कि मैं यहां क्या कर रहा हूं? पढ़ने के लिए बहुत बहुत धन्यवाद!
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
}
}
}
अपने जवाब के लिए धन्यवाद। असल में मेरी छवि प्रतिक्रिया में अधिकतम आयु वाला हेडर गायब था। यह भी ध्यान रखना महत्वपूर्ण है कि कैश किए गए प्रतिसाद कैश निर्देशिका में फ़ोल्डर में सहेजे नहीं जाते हैं बल्कि फ़ोल्डर के बगल में डेटाबेस फ़ाइल में सहेजे जाते हैं। –