Загрузка и кэширование картинок (Download with URL and Caching Images) - Swift 5
class ImageCaching {
static let catchImage =
NSCache<NSString, UIImage>()
// Создать функцию
static func DownloadImage(
withURL url :
URL,
complition : _
image : UIImage -> ()) {
let dataTask = URLSession.shared.dataTask(with: url) {data, urlData, error in
let defImage =
UIImage(named: "cloud")!
var downloadImage : UIImage?
if let data = data {
downloadImage = UIImage(
data: data)
}
if downloadImage != nil {
catchImage.
setObject(
downloadImage!,
forKey: url.absoluteString
as NSString)
}
DispatchQueue.
main.
async {
complition(downloadImage ?? defImage)
}
}
dataTask.resume()
}
static func getImage(withURL
url : URL,
complition : _ image : UIImage -> ()) {
if let image =
catchImage.
object(
forKey: url.absoluteString
as NSString) {
complition(image)
} else {
DownloadImage(withURL: url, complition: complition)
}
}
}
// Пример использования
ImageCaching.
getImage(
withURL: myURL) { (image)
in
self.OutletImage.image = image
}
Возврат к списку