URLSession 错误

Posted

技术标签:

【中文标题】URLSession 错误【英文标题】:URLSession error 【发布时间】: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() 【参考方案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()
    

【讨论】:

以上是关于URLSession 错误的主要内容,如果未能解决你的问题,请参考以下文章

迁移到 Swift3 的问题,URLSession.GET 的编译错误

URLSession 实例方法`downloadTask` 错误

将 URLSession 更新为 swift 3 抛出错误

一个 URLSession 中的不同超时

对'URLSession'使用依赖注入会导致“BAD ACCESS”无限循环错误

由于“错误:‘URLSession’类型的值没有成员‘数据’”,将 Vapor 应用程序部署到 Heroku 失败