【发布时间】:2016-11-02 11:26:22
【问题描述】:
我使用以下代码创建了一个背景 URLSession 对象:
let identifier = /* some background identifier */
let config = URLSessionConfiguration.background(withIdentifier: identifier)
self.session = URLSession(configuration: config, delegate: self, delegateQueue: nil)
我还在委托类中实现了以下URLSessionDataDelegate 方法:
public func urlSession(_ session: URLSession, dataTask: URLSessionDataTask, didReceive response: URLResponse, completionHandler: @escaping (URLSession.ResponseDisposition) -> Void) {
// code goes here
}
public func urlSession(_ session: URLSession, dataTask: URLSessionDataTask, didReceive data: Data) {
// code goes here
}
public func urlSession(_ session: URLSession, task: URLSessionTask, didCompleteWithError error: Error?) {
// code goes here
}
我可以使用以下方法从该会话中成功调用 URLSessionUploadTask:
let fileURl = /* some file url */
let request = /* some URLRequest */
let task = session.uploadTask(with: request, fromFile: fileUrl)
task.resume()
但由于某种原因,我只收到以下回调:
`urlSession(_ session: URLSession, task: URLSessionTask, didCompleteWithError error: Error?)`
和
`urlSession(_ session: URLSession, dataTask: URLSessionDataTask, didReceive data: Data)`.
委托方法:
`urlSession(_ session: URLSession, dataTask: URLSessionDataTask, didReceive response: URLResponse, completionHandler: @escaping (URLSession.ResponseDisposition) -> Void)`
永远不会被调用。
这是 Xcode8 中的错误还是我遗漏了一些重要的东西? 感谢您的帮助!
【问题讨论】:
-
它是一个工作代码并且在早期的 xcode 中工作正常吗?
-
当我在其他两个委托方法上获得委托回调时,代码可以正常工作,我无法在早期的 Xcode 中对此进行测试,因为它们不支持 Swift 3。