【问题标题】:URLSession errorURLSession 错误
【发布时间】:2017-03-13 20:52:31
【问题描述】:

我正在使用一个实际上是为 swift 2 编写的函数。我已经为 swift 3 进行了审核。但我一直收到错误:

URLSession' 产生 '()',而不是预期的上下文结果类型 'URLSession!

我的代码如下所示:

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()
    }

有人知道我做错了什么吗?

【问题讨论】:

  • 为什么URLSession var 和隐式展开是可选的? URLSession(configuration... 返回非可选。并且 Swift 3 引入了 URL 替换 NSURL
  • 看起来不错,在操场上工作。也许你需要一个 Clean / Clean Build Folder,或者文件前面有语法错误。
  • 这在 Playground 中很奇怪我得到了同样的错误。我还修复了项目中的所有其他问题。我也试过这个,但仍然有同样的问题: func downloadItems() { let url: URL = URL(string: urlPath)! let config = URLSessionConfiguration.default var session: URLSession session = URLSession(configuration: config, delegate: self, delegateQueue: nil) let task = session.dataTask(with: url as URL) task.resume() }

标签: json swift swift3 urlsession


【解决方案1】:

而不是:

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

这样做:

   session = {
        let session = URLSession(configuration: configuration, delegate: self, delegateQueue: nil)
        return session
    }()

【讨论】:

    【解决方案2】:

    将您的 URLSession 函数替换为:

    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()
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2017-06-22
      • 1970-01-01
      • 1970-01-01
      • 2023-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-26
      • 1970-01-01
      相关资源
      最近更新 更多