Загрузочный кеш Kingfisher
Мой API возвращает 2 типа фотографий: маленькие и большие
Я использую зимородок для загрузки фотографий и всегда сначала загружаю маленькие фотографии. Когда я загружаю большое фото, я хочу добиться этого
if hasCacheSmallPhoto {
imageView.kf.setImage(with: bigImageUrl, placeholder: cacheImage)
} else {
imageView.kf.setImage(with: bigImageUrl, placeholder: defaultPlaceHolderImage)
}
Как я могу правильно добиться этого с помощью зимородка
1 ответ
Вам нужно сначала проверить, кэшируется ли маленькое изображение kingFisher Cache.
if ImageCache.default.isCached(forKey:smallImageUrl) {
ImageCache.default.retrieveImage(forKey: smallImageUrl) { result in
switch result {
case .success(let value):
imageView.kf.setImage(with: bigImageUrl, placeholder: value.image)
case .failure(let error):
print(error)
}
}
}
else {
imageView.image = defaultPlaceHolderImage
imageView.kf.setImage(with: smallImageUrl) { result in
// `result` is either a `.success(RetrieveImageResult)` or a `.failure(KingfisherError)`
switch result {
case .success(let value):
// The image was set to image view:
imageView.kf.setImage(with: bigImageUrl, placeholder: value.image)
// The source object which contains information like `url`.
print(value.source)
case .failure(let error):
print(error) // The error happens
}
}
}