2016-10-03 2 views
0

Я использую (пытается) AlamofireImage. Мои сохраненные изображения не сохранены.AlamofireImage сохраненные в кэше изображения на самом деле не сохранены

мой код включают в себя:

import Alamofire 
import AlamofireImage 

let imageCache = AutoPurgingImageCache(
    memoryCapacity: 100 * 1024 * 1024, 
    preferredMemoryUsageAfterPurge: 60 * 1024 * 1024 
) 

тогда я коплю изображение себя с помощью:

imageCache.add(image, withIdentifier: path) 

но при следующем запуске, он всегда возвращает ноль, когда я пытаюсь извлечь это изображение с помощью тот же путь:

if let image = imageCache.image(withIdentifier: path){ 
    return image 
} 
return nil 

что я делаю неправильно?

  • во время работы \ отладки я могу видеть, что Imagecache-currentMemoryUsage = 0

Спасибо.

ответ

0

Вам не нужно вызывать метод add(). Я создаю свой собственный класс, который обертывает кеш-память Alamofire.

class ImageManager: NSObject { 
    static let shared = ImageManager() 
    private var imageDownloader: ImageDownloader! 
    private var imageCache: AutoPurgingImageCache! 


    // Configuration 
    var maximumActiveDownloads = 5 
    var placeholderImage: UIImage! 
    var imageTransitionDuration: NSTimeInterval = 0.5 

    // The total memory capacity of the cache in MB. 
    var memoryCapacity: UInt64 = 150 

    //The preferred memory usage after purge in MB. During a purge, images will be purged until the memory capacity drops below this limit. 
    var memoryUsageAfterPurge: UInt64 = 60 


    private override init() { 
     super.init() 

     imageCache = AutoPurgingImageCache(
      memoryCapacity: memoryCapacity * 1024 * 1024, 
      preferredMemoryUsageAfterPurge: memoryUsageAfterPurge * 1024 * 1024 
     ) 

     imageDownloader = ImageDownloader(
      configuration: ImageDownloader.defaultURLSessionConfiguration(), 
      downloadPrioritization: .FIFO, 
      maximumActiveDownloads: maximumActiveDownloads, 
      imageCache: imageCache 
     ) 

     UIImageView.af_sharedImageDownloader = imageDownloader 
    } 


    func setImageOrPlaceholder(onImageView imageView: UIImageView, stringURL: String?) { 
     guard let correctURL = NSURL.getURL(fromString: stringURL) else { 
      //debug("URL incorrect!: \(stringURL)", isError: true) 

      imageView.image = placeholderImage 
      return 
     } 

     let imageTransition: UIImageView.ImageTransition = .CrossDissolve(imageTransitionDuration) 

     imageView.af_setImageWithURL(correctURL, 
            placeholderImage: placeholderImage, 
            filter: nil, 
            imageTransition: imageTransition, 
            completion: { response in 
             //   debug("\(response.result.value)") 
     }) 
    } } 
0

но при следующем запуске, он всегда возвращает ноль, когда я пытаюсь извлечь это изображение, используя один и тот же путь:

Это звучит, как вы перезапустить приложение. ImageCache - только память, и память вашего приложения восстанавливается при перезапуске приложения.

Смежные вопросы