如果我创建一个NSURLSessionDownloadTask
,然后在它完成之前取消它,完成块似乎仍然会触发。
let downloadTask = session.downloadTaskWithURL(URL, completionHandler: { location, response, error in
...
}
如何检查此块内的下载任务是否被取消,以便在没有下载任务时不会尝试对生成的下载进行操作?
如果我创建一个NSURLSessionDownloadTask
,然后在它完成之前取消它,完成块似乎仍然会触发。
let downloadTask = session.downloadTaskWithURL(URL, completionHandler: { location, response, error in
...
}
如何检查此块内的下载任务是否被取消,以便在没有下载任务时不会尝试对生成的下载进行操作?
对于下载任务,将使用 的nil
值调用完成处理程序,对象location
的code
值为。例如:URLError
.cancelled
let task = session.downloadTask(with: url) { location, response, error in
if let error = error as? URLError {
if error.code == .cancelled {
// canceled
} else {
// some other error
}
return
}
// proceed to move file at `location` to somewhere more permanent
}
task.resume()
或者查找的对象的code
值:NSError
NSURLErrorCancelled
let task = session.downloadTask(with: url) { location, response, error in
if let error = error as NSError? {
if error.code == NSURLErrorCancelled {
// canceled
} else {
// some other error
}
return
}
// proceed to move file at `location` to somewhere more permanent
}
task.resume()
数据任务的参数转换过程与error
上面的下载任务相同。
对于 Swift 2,请参阅此答案的先前版本。