Не обязательно / не рекомендуется использовать внешние фреймворки только для загрузки изображения с URL.
Если вы используете внешний фреймворк, вы добавляете ненужные коды в свой проект, потому что нет фреймворка, который просто добавляет функция загрузки изображения, вероятно, вы добавляете больше ненужных вещей с помощью этой структуры.
Я рекомендую вам реализовать ее самостоятельно! Это будет более производительно и проще, чем добавление внешнего фреймворка.
Это код для загрузки изображения без внешних фреймворков:
import UIKit
typealias GMImageServiceSuccess = (UIImage) -> Void
typealias GMImageServiceFail = (Error) -> Void
class GMImageService {
// MARK: - Class vars.
private static let imageServiceCache = NSCache<NSString, UIImage>()
// MARK: - Vars.
private var currentDataTask: URLSessionDataTask?
// MARK: - Fetch images functions.
func gmImageFromURL(_ urlString: String, sucess: GMImageServiceSuccess?, fail: GMImageServiceFail?) {
if let imageFromCache = GMImageService.imageServiceCache.object(forKey: urlString as NSString) {
sucess?(imageFromCache)
return
}
guard let imageURL = URL(string: urlString) else {
// ERROR.
return
}
URLSession.shared.dataTask(with: imageURL) { data, response, error in
guard let imageData = data else {
// ERROR.
return
}
if let imageToCache = UIImage(data: imageData) {
DispatchQueue.main.async {
GMImageService.imageServiceCache.setObject(imageToCache, forKey: urlString as NSString)
sucess?(imageToCache)
}
} else {
// ERROR.
}
}.resume()
}
// MARK: - Cancel images functions.
func mpImageCancelCurrent() {
if let currentTask = self.currentDataTask {
currentTask.cancel()
}
}
}
Сообщите мне, если вам нужно реализовать кеш изображений, быстро!