Swift 2 Parse 和 KingFisher 缓存图像
Swift 2 Parse and KingFisher cache images
我正在使用 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,然后它会从集合视图中重新加载数据并打印 "Finished"
这是否意味着它重新下载了图像?或者它从缓存中加载它们??
我问是因为它以不同的方式将图像附加到单元格内,而不是第一次加载时。
有什么想法吗?
P.S。我想要做的是,在每个单元格中,我想用每个配方的对象 ID 缓存图像,所以当单元格加载并且它有使用这个唯一对象 ID 缓存的图像时,从缓存加载它而不是下载它.
试试这个代码:
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)])
我正在使用 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,然后它会从集合视图中重新加载数据并打印 "Finished"
这是否意味着它重新下载了图像?或者它从缓存中加载它们??
我问是因为它以不同的方式将图像附加到单元格内,而不是第一次加载时。
有什么想法吗?
P.S。我想要做的是,在每个单元格中,我想用每个配方的对象 ID 缓存图像,所以当单元格加载并且它有使用这个唯一对象 ID 缓存的图像时,从缓存加载它而不是下载它.
试试这个代码:
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)])