URLSession error

2020-04-18 05:56发布

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?

2条回答
我欲成王,谁敢阻挡
2楼-- · 2020-04-18 06:04

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()
    }
}
查看更多
成全新的幸福
3楼-- · 2020-04-18 06:20

instead of :

 session = URLSession(configuration: configuration, delegate: self, delegateQueue: nil)

Do this:

   session = {
        let session = URLSession(configuration: configuration, delegate: self, delegateQueue: nil)
        return session
    }()
查看更多
登录 后发表回答