2016-11-21 4 views
5

Ich habe eine schnelle 2.3-Projekt Ich habe gerade aktualisiert, um Swift 3.0 und der folgende Code brach.Xcode Fehler Mehrdeutige Referenz auf Member 'DataTask (mit: completionHandler :)'

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

Ich bin nicht bewusst, wie es

Antwort

9

Sie zu beheben, dass die Fehlermeldung erhalten, wenn die request ein NSURLRequest ist eher als ein 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() 

Oder, wenn Sie die URLRequest sind mutiert, verwenden 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() 

Beachten Sie auch, habe ich NSString mit String ersetzt.

Verwandte Themen