gpt4 book ai didi

ios - 异步获取图像Firebase Swift 5

转载 作者:行者123 更新时间:2023-12-01 21:45:22 25 4
gpt4 key购买 nike

我在CellForRowAt中使用此代码来显示图像。滚动是平稳的,但是网络调试告诉我,每次我滚动表格时它仍会下载图像。
如何一次下载所有图像?

if let url = URL( string: rest1.image) {
DispatchQueue.global().async {
if let data = try? Data(contentsOf: url) {
DispatchQueue.main.async {
cell.RestaurantImage.image = UIImage(data: data)
}
}
}
}

最佳答案

您需要使用NSCache来保存和检索图像。从网络中获取图像后,将其存储在缓存中,并在下次从缓存中加载图像。因为NSCache仅允许类类型,所以使用键NSCache和值NSString创建NSData实例。这是一个例子:

cellForItem方法之外创建图像缓存,也可以将其创建为Global,如下所示:

let imageCache = NSCache<NSString, NSData>()

然后在 cellForItem方法中:
if let url = URL(string: rest1.image) {
if let data = imageCache.object(forKey: rest1.image as NSString) {
cell.RestaurantImage.image = UIImage(data: data as Data)
} else {
DispatchQueue.global().async {
if let data = try? Data(contentsOf: url) {
imageCache.setObject(data as NSData, forKey: rest1.image as NSString)
DispatchQueue.main.async {
cell.RestaurantImage.image = UIImage(data: data)
}
}
}
}
}

关于ios - 异步获取图像Firebase Swift 5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62289360/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com