2015-06-09 5 views
5

Xcode 7 बीटा में स्विफ्ट 2 का उपयोग शुरू होने के बाद, मैं एक त्रुटि cannot invoke मिलता है। इस मुद्दे का क्या कारण है?प्रकार का एक तर्क सूची के साथ '(NSMutableURLRequest, (_, _, _) फेंकता है -> _)' 'dataTaskWithRequest' आह्वान कर सकते हैं नहीं

मैं इन 2 सवाल का पालन करके मेरी समस्या यह पता लगाने की कोशिश करते हैं, लेकिन मैं अभी भी त्रुटि मिलती है: Question 1, Question 2

त्रुटि:

Cannot invoke 'dataTaskWithRequest' with an argument list of type '(NSMutableURLRequest, (_, _, _) throws -> _)'

पूरा कोड

let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {data, response, error in 
      let json = try NSJSONSerialization.JSONObjectWithData(data, options: .MutableContainers) as? NSDictionary 

      if let parseJSON = json { 
       let resultValue:String = parseJSON["status"] as! String 

       if(resultValue=="Success"){ 

        //Store Confimed Account Detail Inside Core Data 
        try self.saveAccountDetail(userloginTextField!, confirmDataRetrieve: 0) 

        //Login is Successful 
        NSUserDefaults.standardUserDefaults().setBool(true, forKey: "isUserLoggedIn") 
        NSUserDefaults.standardUserDefaults().synchronize() 

        self.dismissViewControllerAnimated(true, completion: nil) 

       } 
      } 

     } 

उत्तर

5

धन्यवाद परीक्षण कर सकते हैं उसकी मदद से मैं यह पता लगाने की है कि इस स्विफ्ट 2 में नई सुविधा है try या try! हैंडलिंग के लिए

NSJSONSerialization चलाने की जानी चाहिए: (यदि इनपुट अपने निकालें फेंक है !)

let json = try!NSJSONSerialization.JSONObjectWithData(data!, options: .MutableContainers) as? NSDictionary 
+0

प्रलेखन से है: कभी-कभी आप जानते हैं कि फेंकने वाला फ़ंक्शन या विधि नहीं, वास्तव में, रनटाइम पर एक त्रुटि फेंक देगी। उन अवसरों पर, आप कोशिश लिख सकते हैं! अभिव्यक्ति से पहले त्रुटि प्रसार को अक्षम करने के लिए और रनटाइम assertion में कॉल को लपेटें कि कोई त्रुटि फेंक दी जाएगी। अगर वास्तव में एक त्रुटि फेंक दी जाती है, तो आपको रनटाइम त्रुटि मिल जाएगी। – Marcio

1

इस तरह प्रयास करें:

let task = NSURLSession.sharedSession().dataTaskWithRequest(request, 
    completionHandler: { 
     (data, response, error) -> Void in 
     if let data = data { 
      println(data.length) 
      // you can use data here 
     } else if let error = error { 
      println(error.description) 
     } 
}) 
task!.resume() 

आप, जिस तरह से आप कोड में टाइप किया जाना चाहिए के साथ सिंह Dabus को यह एक

let task = NSURLSession.sharedSession().dataTaskWithRequest(
    NSURLRequest(URL: NSURL(string: "https://cdn.photographylife.com/wp-content/uploads/2014/06/Nikon-D810-Image-Sample-6.jpg")!), 
    completionHandler: { 
     (data, response, error) -> Void in 
     if let data = data { 
      println(data.length) 
      if let image = UIImage(data: data) { 
       println(image.description) 
      } 

     } else if let error = error { 
      println(error.description) 
     } 

}) 
task!.resume() 
+0

अब मैं call' – Xrait

+0

में त्रुटि मिलती है 'अतिरिक्त तर्क" completionHandler "मैं सिर्फ यह परीक्षण किया है –

+1

अब मैं प्रकार के समारोह फेंकने से इस त्रुटि' अमान्य रूपांतरण प्राप्त '(_, _, _) फेंकता है -> शून्य' के लिए गैर-फेंकने का कार्य प्रकार '(एनएसडीटा ?, एनएसआरएलआरस्पॉन्स ?, एनएसईआरआरआर?) -> शून्य – Xrait

2

try से try! में बदलें तो यह मानक के रूप में संकलित करना शुरू कर देगा।

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