问题
I am using a function which was actually written for swift 2. I've made moderations for swift 3. But I keep getting the error:
URLSession' produces '()', not the expected contextual result type 'URLSession!
My code looks like this:
func downloadItems() {
let url: NSURL = NSURL(string: urlPath)!
var session: URLSession!
let configuration = URLSessionConfiguration.default
session = URLSession(configuration: configuration, delegate: self, delegateQueue: nil)
let task = session.dataTask(with: url as URL)
task.resume()
}
Anybody know what I am doing wrong?
回答1:
instead of :
session = URLSession(configuration: configuration, delegate: self, delegateQueue: nil)
Do this:
session = {
let session = URLSession(configuration: configuration, delegate: self, delegateQueue: nil)
return session
}()
回答2:
Replace your URLSession functions with those:
func urlSession(_ session: URLSession, dataTask: URLSessionDataTask, didReceive data: Data) {
self.data.append(data as Data)
}
func urlSession(_ session: URLSession, task: URLSessionTask, didCompleteWithError error: Error?) {
if error != nil {
print("Failed to download data")
}else {
print("Data downloaded")
self.parseJSON()
}
}
来源:https://stackoverflow.com/questions/40347832/urlsession-error