【问题标题】:Cannot invoke 'URLSession' with an argument list of type '(configuration: URLSessionConfiguration)'无法使用类型为“(配置:URLSessionConfiguration)”的参数列表调用“URLSession”
【发布时间】:2016-12-01 09:16:48
【问题描述】:

请注意,我尝试了很多像 this 这样的解决方案,但都没有奏效。

这里是screenshot 和代码;

func downloadItems() {

    let urlE: String = "http://alicelik.me/forios/service.php"
    guard let url = URL(string: urlE) else {
        print("Error: cannot")
        return
    }

    let configuration = URLSessionConfiguration.default
    var session = URLSession(configuration: configuration)

    let task = session.dataTask(with: url as URL){
        (data, response, error) in
        guard error == nil else {
            print("error calling GET on /todos/1")
            print(error)
        }
        return()
    }

    task.resume()

}

这里是 URLSession 函数;

@nonobjc func URLSession(session: URLSessionConfiguration, dataTask: URLSessionDataTask, didReceiveData data: NSData) {
    self.data.append(data as Data);

}

@nonobjc func URLSession(session: URLSessionConfiguration, task: URLSessionTask, didCompleteWithError error: NSError?) {
    if error != nil {
        print("Failed to download data")
    }else {
        print("Data downloaded")
        self.parseJSON()
    }

}

注意:func URLSession(session *) 中的 *URLSession 和 *URLSessionConfiguration 给出相同的错误。

【问题讨论】:

  • 它在我的 Xcode 上运行良好!
  • 尝试新的功能代码。它现在会向您显示错误。我先忘了。
  • 不应该是守卫错误吗?
  • 尝试删除你的两个 URLSession func ,因为你没有设置 URLSession 的代表,所以这些不起作用,你也把 @nonobjc 放到了两个函数中,这使得函数完全没用。
  • 谢谢大家,第一个 nonobjc 没用,谢谢@OOPer 和秒,当我删除 2 URLSession func 时它工作正常。 Solih 后我意识到了,谢谢

标签: swift swift3 xcode8 invoke


【解决方案1】:

我遇到了同样的问题,解决了:

var session = Foundation.URLSession(configuration: configuration)

【讨论】:

  • 更改 ['NSURLSession' with 'URLSession'] 和 ['URLSession' with 'urlSession'] 效果很好。
  • 为什么我需要指定 Foundation 才能工作?确实如此,但我不知道为什么。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多