URLSession dataTask를 사용하여 결과 처리기로 URLSessionDownloadDelegate가 포함 된 파일을 다운로드하고 있습니다. 그러나 urlSession(_ session: URLSession, downloadTask: URLSessionDownloadTask, didFinishDownloadingTo location: URL)
은 호출되지 않습니다. 대신 오류가 0 일인 urlSession(_ session: URLSession, task: URLSessionTask, didCompleteWithError error: Error?)
이 표시됩니다. 대신 completionHandler 메소드를 사용하여 작업을 수행하면 모든 것이 작동합니다.URLSession 대리자 성공 메서드가 호출되지 않았지만 오류가 없습니다.
import UIKit
class ViewController: UIViewController, URLSessionDownloadDelegate {
var downloadTask: URLSessionDataTask?
override func viewDidLoad() {
super.viewDidLoad()
let configuration = URLSessionConfiguration.default
let session = URLSession(configuration: configuration, delegate: self, delegateQueue: OperationQueue.main)
let url = URL(string: "https://unsplash.it/200/300/?random")!
//downloadTask = session.dataTask(with: request)
downloadTask = session.dataTask(with: url)
downloadTask!.resume()
}
@IBAction func cancelButtonTapped(_ sender: Any) {
downloadTask?.cancel()
}
func urlSession(_ session: URLSession, didBecomeInvalidWithError error: Error?) {
print("session: didBecomeInvalidWithError: \(error?.localizedDescription)")
}
func urlSession(_ session: URLSession, downloadTask: URLSessionDownloadTask, didFinishDownloadingTo location: URL) {
print("Your data is here!")
}
func urlSession(_ session: URLSession, downloadTask: URLSessionDownloadTask, didWriteData bytesWritten: Int64, totalBytesWritten: Int64, totalBytesExpectedToWrite: Int64) {
let progress = Float(totalBytesWritten/totalBytesExpectedToWrite)
print("Making progress: \(progress)")
}
func urlSession(_ session: URLSession, task: URLSessionTask, didCompleteWithError error: Error?) {
print("session: task: didCompleteWithError: \(error?.localizedDescription)")
session.finishTasksAndInvalidate()
}
}
시뮬레이터 출력이
session: task: didCompleteWithError: nil
session: didBecomeInvalidWithError: nil
사전에 감사입니다 :
여기 내 코드입니다.
어느 쪽이든 또는 데이터 작업에 대한 올바른 위임 방법을 사용하여 데이터를 직접 축적된다. 어느 쪽이든. – dgatwood
감사합니다. 그러나 URLSessionConfiguration에 대한 배경 사용은 필요하지 않습니다. – MasterCarl