2017-07-27 36 views

回答

2

在SWIFT 3 NS前缀去掉,现在下面是urlsession

URLSession.shared.dataTask(with: url!) { (data, response, error) in 
     //do the work 
} 
2

语法在迅速3 - 最新的方法调用的API。

let url = URL(string: urlString)! //Pass the URL String format 
var request = URLRequest(url: url) 

_ = URLSession.shared.dataTask(with: request) { data, response, error in guard let data = data, error == nil else { 
        print(error?.localizedDescription ?? "No data") 
         self.ProgressViewHide() 
         return 
        } 
    DispatchQueue.main.async { 
      let responseJSON = try? JSONSerialization.jsonObject(with: data, options: []) 
       // Get Response on responseJSON 
    } 

}.resume() 
1

因此,对于Swift 3.x中的新方法,您必须像这样放置。另外,请记住,你的闭包是异步工作的,所以我用GCD封装了要在主线程上执行的调用。

let request = URLRequest(url: URL(string: "Put your url")!) 

    let task = URLSession.shared.dataTask(with: request) { 
       data, response, error in 
       //print(error?.localizedDescription) 

       do { 
        let json = try JSONSerialization.jsonObject(with: data!, options: .allowFragments) as AnyObject 

        //on main thread 
        DispatchQueue.main.async { 
         self.currentCode = json["code"]!! as! String 

        } 

       }catch{ 
        print("error\(error)") 
       } 
      } 
      task.resume() 

不过,我建议您使用更简便的方法来处理使用Alamofire网络, 的API调用https://github.com/Alamofire/Alamofire