Сохранение изображения в сеансе URL - PullRequest
0 голосов
/ 03 марта 2020

быстрый вопрос. Я хочу извлечь загруженное изображение из URL и сохранить его в образе пользовательского интерфейса.

Как мне это сделать?

fileprivate func beginDownload() {

        let url = URL(string: "URL")!

        let configuration = URLSessionConfiguration.default
        let operationQueue = OperationQueue()
        let urlSession = URLSession(configuration: configuration, delegate: self, delegateQueue: operationQueue)

        let downloadTask = urlSession.downloadTask(with: url)

        downloadTask.resume()
}

Вот мои заглушки протокола сеанса URL:

func urlSession(_ session: URLSession, downloadTask: URLSessionDownloadTask, didWriteData bytesWritten: Int64, totalBytesWritten: Int64, totalBytesExpectedToWrite: Int64) {
        print(totalBytesWritten, totalBytesExpectedToWrite)

    }

    func urlSession(_ session: URLSession, downloadTask: URLSessionDownloadTask, didFinishDownloadingTo location: URL) {

        print("Finished dowloading file")
    }

1 Ответ

1 голос
/ 03 марта 2020

Вам необходимо загрузить изображение из загрузки location, созданной методом делегата urlSession(_:downloadTask:didFinishDownloadingTo:):

class Request: NSObject {

    func getPicture() {
        let url = URL(string: "https://media.tractorsupply.com/is/image/TractorSupplyCompany/1305371?$456$")!
        let session = URLSession(configuration: .default, 
                                 delegate: self, 
                                 delegateQueue: nil)
        session.downloadTask(with: url).resume()
    }

}

extension Request: URLSessionDownloadDelegate {

    func urlSession(_ session: URLSession, 
                    downloadTask: URLSessionDownloadTask, 
                    didFinishDownloadingTo location: URL) {
        guard let data = try? Data(contentsOf: location), 
              let image = UIImage(data: data) else { return }
        print(image)
    }

}

Request().getPicture()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...