Мое приложение выглядит следующим образом. Изображение приложения У меня есть таблица с песнями, и я могу загрузить их, а также приостановить их и возобновить. Но у меня проблема с приостановкой и возобновлением.Например, я щелкаю для загрузки Track01 и приостанавливаю загрузку на 10%.Затем я нажимаю на скачивание Track02 и приостанавливаю скачивание на 30%.И теперь я нажимаю возобновить загрузку Track01, и он возобновляет с 30%, но не с 10%.Задача для Track02 заменяет задачу для Track01.Как сделать отдельное задание для каждого трека?Мой код загрузки выглядит следующим образом
class DownloadTracks: NSObject,URLSessionDownloadDelegate, URLSessionTaskDelegate, URLSessionDelegate {
var task : URLSessionDownloadTask!
let configuration = URLSessionConfiguration.default
let operationQueue = OperationQueue.main
var session : URLSession!
var downloadTaskID : Int!
var progress : Float = 0.0
func downloadTask(url : URL) {
session = URLSession.init(configuration: configuration, delegate: self, delegateQueue: operationQueue)
task = session.downloadTask(with: url)
task.resume()
print("go download")
}
func urlSession(_ session: URLSession, task: URLSessionTask, didCompleteWithError error: Error?) {
print("1111")
}
func urlSession(_ session: URLSession, downloadTask: URLSessionDownloadTask, didFinishDownloadingTo location: URL) {
let documentaryDirectoryURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
let destenationURL = documentaryDirectoryURL.appendingPathComponent(downloadTask.description + ".mp3")
print(destenationURL)
do {
try FileManager.default.moveItem(at: location, to: destenationURL)
}
catch let error as NSError {
print(error.localizedDescription)
}
}
func pauseDownload() {
task.suspend()
}
func resumeDownload() {
task.resume()
}
func urlSession(_ session: URLSession, downloadTask: URLSessionDownloadTask, didWriteData bytesWritten: Int64, totalBytesWritten: Int64, totalBytesExpectedToWrite: Int64) {
progress = Float (totalBytesWritten) / Float(totalBytesExpectedToWrite)
print(progress)
}
}