#swift #caching #kingfisher
#swift #кэширование #kingfisher
Вопрос:
В настоящее время я загружаю изображения из библиотеки Swift Kingfisher как таковой :
if imageURL != nil {
let imageConvertedUrl = URL(string: imageURL!)
photo.kf.setImage(with: imageConvertedUrl, options: [.diskCacheExpiration(.days(3)), .memoryCacheExpiration(.days(3))]) { result in
// `result` is either a `.success(RetrieveImageResult)` or a `.failure(KingfisherError)`
switch result {
case .success(let value):
self.spinnerView.isHidden = true
print(value.cacheType)
case .failure(let error):
print(error) // The error happens
self.spinnerView.isHidden = false
}
}
}
Я могу отключить Интернет, перезапустить приложение и загрузить изображение из кэша без проблем. Однако, через несколько минут, если я снова открою изображение без Интернета, оно не загрузится, и я столкнусь с сообщением об ошибке:
Internet connection appears to be offline., NSErrorFailingURLStringKey=
Я не уверен, почему изображение не загружается из кэша, так как я установил .diskCacheExpiration
значение 3 дня, поэтому я бы предположил, что оно будет загружаться из кэша до трех дней.
Комментарии:
1. Возможно ли, что это имеет какое-либо отношение к изображениям, хранящимся на диске? Решило бы проблему добавление
ImageCache.default.memoryStorage.config.totalCostLimit = 1
?2. Я попытался поместить изображения не в ОЗУ, и проблема сохраняется. После отключения Интернета изображения будут загружаться только некоторое время, пока, в конце концов, я снова не открою приложение, и они не будут загружаться из кэша.