gpt4 book ai didi

ios - 如何处理完成处理程序 block 中已取消的 NSURLSessionTask?

转载 作者:IT王子 更新时间:2023-10-29 05:22:53 26 4
gpt4 key购买 nike

如果我创建一个 NSURLSessionDownloadTask,然后在它完成之前取消它,完成 block 似乎仍然会触发。

let downloadTask = session.downloadTaskWithURL(URL, completionHandler: { location, response, error in 
...
}

如何检查此 block 内的下载任务是否已取消,以便在没有下载时尝试操作结果下载?

最佳答案

对于下载任务,将使用 locationnil 值和 URLError 的 code 值调用完成处理程序 对象将被 .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()

或者寻找 NSURLErrorCancelledNSError 对象的 code 值:

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,请参阅 previous revision of this answer .

关于ios - 如何处理完成处理程序 block 中已取消的 NSURLSessionTask?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26411397/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com