我正在使用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缓存的图像时,从缓存加载它而不是下载它
答案 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)])