2016-11-21 7 views
5

मेरे पास एक स्विफ्ट 2.3 प्रोजेक्ट है जिसे मैंने अभी 3.0 स्विफ्ट करने के लिए अपडेट किया है और निम्न कोड टूटा हुआ है।एक्सकोड त्रुटि सदस्य के डेटा टास्क के साथ संदिग्ध संदर्भ (साथ: समापन हैंडलर :) '

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

आपको लगता है कि त्रुटि प्राप्त कर सकते हैं ठीक करने के लिए कर रहा हूँ अगर request एक NSURLRequest बजाय एक 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 के साथ बदल गए हैं।

संबंधित मुद्दे