Swift 2 Parse和KingFisher缓存图像

时间:2016-08-04 09:30:56

标签: swift caching swift2 ios9 image-caching

我正在使用KingFisher https://github.com/onevcat/Kingfisher

库所以我可以缓存图像,如果有人熟悉它,我想要一些提示。 所以我有以下代码

let myCache = ImageCache(name: recipesClass.objectId!)
let queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)
let optionInfo: KingfisherOptionsInfo = [
    .DownloadPriority(0.5),
    .CallbackDispatchQueue(queue),
    .Transition(ImageTransition.Fade(1)),
    .TargetCache(myCache)
]
if  let imageFile = recipesClass[RECIPES_COVER] as? PFFile {

let URL = NSURL(string: imageFile.url!)!

cell.coverImage.kf_setImageWithURL(URL, placeholderImage: nil,
    optionsInfo: optionInfo,
    progressBlock: { receivedSize, totalSize in
        print("\(indexPath.row + 1): \(receivedSize)/\(totalSize)")
    },
    completionHandler: { image, error, cacheType, imageURL in
        print("\(indexPath.row + 1): Finished")
})

} else {
     cell.coverImage.image = UIImage(named:"logo")
}

当我第一次进入视图时,它会正常加载具有此良好信息的图像。但我也有一个刷新按钮,它向Parse发出查询,它会检查是否有新的Recipe,然后从集合视图中重新加载数据并打印出#34; Finished"

这是否意味着它会再次下载图像?或者它从Cache ??

加载它们

我问,因为它会以不同的方式将图像附加到单元格中,而不是第一次加载。

有什么想法吗?

P.S。我想要做的是在每个单元格中我想用每个配方的对象ID缓存图像,这样当单元格加载并且它具有用这个唯一对象id缓存的图像时,从缓存加载它而不是下载它

1 个答案:

答案 0 :(得分:3)

试试这段代码:

var imageView:UIImageView!    
let mCa = ImageCache(name: "my_cache")
    let imagePath = getImagePath("image url")
    imageView.kf_setImageWithURL(NSURL(string: imagePath)!,placeholderImage: UIImage(named: "DefaultImageName"),optionsInfo: [.TargetCache(mCa)])