【发布时间】:2023-04-03 04:50:01
【问题描述】:
我正在从 firebase 存储中获取图像并希望使用SDWebImage 对其进行缓存,但在我的ViewController 中它会继续下载。请指导我如何缓存图像
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! demoCell
cell.textDemo.text = images[indexPath.row]
var images_list = [String]()
images_list.append(images[indexPath.row])
images_list.append(images[indexPath.row] + "1")
let storage = Storage.storage().reference()
var imagesarray = [URL]()
for x in images_list{
let storageRef = storage.child("images/\(x).jpg")
storageRef.downloadURL { (url, error) in
if let error = error{
print(error.localizedDescription)
}
else if let downloadURL = url?.absoluteString{
cell.imageDemo.image = SDImageCache.shared().imageFromCache(forKey: downloadURL)
print("Image Cached")
}
else{
cell.imageDemo.sd_setImage(with: url!, completed: nil)
}
}
}
return cell
}
【问题讨论】:
-
SDWebimage已经默认做了这个事情,不需要SDImageCache这样做。
-
我之前确实回答了这个问题。当您执行
sd_setImage时,它会被缓存,如果下次 URL 相同,则从缓存中获取图像。此外,通过在表格外部下载dataSource然后仅使用 url,可以提高您在cellForRowAt上做事的效率 -
我也按照您的建议做了同样的事情,但是当我这样做时,每次滚动表格视图时都会下载图像。现在我将发布一个答案,请查看并帮助我了解如何在用户没有互联网连接时离线存储它
-
如果您的问题仍然存在,您可以使用 KingFisher
-
肯定会尝试的
标签: swift caching sdwebimage