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.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...