I have a swift 2.3 project I just updated to swift 3.0 and the following code broke.
    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()
I am unaware how to fix it
You can get that error if the request is a NSURLRequest rather than a URLRequest.
let url = URL(string: urlString)!
let request = URLRequest(url: url)
let task = URLSession.shared.dataTask(with: request) { data, response, 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()
Or, if you're mutating the URLRequest, use var:
let url = URL(string: urlString)!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.httpBody = ...
let task = URLSession.shared.dataTask(with: request) { data, response, 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()
Also, note, I've replaced NSString with String.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With