2016-11-21 76 views
5

我有一個swift 2.3項目,我剛更新到swift 3.0,下面的代碼破壞了。Xcode錯誤對成員'dataTask的歧義引用(with: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() 

,我不知道如何解決它

回答

9

你可以得到錯誤,如果requestNSURLRequest而非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() 

或者,如果你的變異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, 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() 

此外,請注意,我把它換成NSStringString