Xcode Error对成员’dataTask(with:completionHandler :)’的模糊引用

参见英文答案 > Swift 3 URLSession.shared() Ambiguous reference to member ‘dataTask(with:completionHandler:) error (bug)13个
我有一个swift 2.3项目我刚刚更新到swift 3.0并且以下代码中断了.
let task = URLSession.shared.dataTask(with: request,completionHandler: {
        data,response,error in

        if error != nil {
            print("error=\(error)")
            return
        }

        print("response = \(response)")

        let responseString = Nsstring(data: data!,encoding: String.Encoding.utf8)
        print("responseString = \(responseString)")
    }) 
    task.resume()

我不知道如何解决

解决方法

如果请求是NSURLRequest而不是URLRequest,则可以获得该错误.
let url = URL(string: urlString)!
let request = URLRequest(url: url)

let task = URLSession.shared.dataTask(with: request) { data,error in
    guard let data = data,error == nil else {
        print("error=\(error)")
        return
    }

    print("response = \(response)")

    let responseString = String(data: data,encoding: .utf8)
    print("responseString = \(responseString)")
}
task.resume()

或者,如果您正在改变URLRequest,请使用var:

let url = URL(string: urlString)!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.httpBody = ...

let task = URLSession.shared.dataTask(with: request) { data,encoding: .utf8)
    print("responseString = \(responseString)")
}
task.resume()

另外,请注意,我已经用String替换了Nsstring.

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...