para - Error de Xcode Referencia ambigua a dataTask del miembro(con: completionHandler:) ''
xcode simulator (1)
Esta pregunta ya tiene una respuesta aquí:
Tengo un proyecto rápido 2.3 que acabo de actualizar a swift 3.0 y se rompió el siguiente código.
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()
No sé cómo solucionarlo
Puede obtener ese error si la request
es una request
NSURLRequest
lugar de una request
NSURLRequest
.
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()
O bien, si está mutando la 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()
Además, tenga en cuenta que he reemplazado NSString
con String
.