2017-04-26 89 views
0

當我執行NSURLConnection.sendAsynchronousRequest它總是表現出同樣的錯誤:錯誤,同時處理 「NSURLConnection.sendAsynchronousRequest」

Invalid conversion from throwing function of type '(NSURLResponse?, NSData?, NSError?) throws -> Void' to non-throwing function type '(NSURLResponse?, NSData?, NSError?) -> Void'"

這是代碼:

progressBar.hidden = false 
    progressBar.progress = 0 
    var am = Int(ammount * 100) 
    var amToOwner = Int() 
    let process = Float(100-fee)*Float(ammount)/Float(100) 
    amToOwner = Int(self.roundToPlaces(0, number: process)) 
    progressBar.progress = 33.3 
    let urlPath: String = "https://api.stripe.com/v1/charges" 
    let url: NSURL = NSURL(string: urlPath)! 
    let session = NSURLSession.sharedSession() 
    let request1: NSMutableURLRequest = NSMutableURLRequest(URL: url) 

    request1.HTTPMethod = "POST" 
    var stringPost = String() 
    stringPost="amount=\(am)&currency=eur&source=" + self.tok + "&description=\"\(description)\"&destination[account]=\(ownerAccountID!)&destination[amount]=\(try! Int(amToOwner*100))" // Key and Value 
    stringPost = stringPost.stringByReplacingOccurrencesOfString("\\", withString: "") 
    print(stringPost) 

    let data = stringPost.dataUsingEncoding(NSUTF8StringEncoding) 

    request1.timeoutInterval = 60 
    request1.HTTPBody=data 
    request1.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type") 
    request1.setValue("Bearer " + _secretKey, forHTTPHeaderField: "Authorization") 
    request1.HTTPShouldHandleCookies=false 
    print(request1.allHTTPHeaderFields) 
    NSURLConnection.sendAsynchronousRequest(request1, queue: queue, completionHandler:{ (response: NSURLResponse?, data: NSData?, error: NSError?) -> Void in) 
     self.progressBar.progress = 66.6 
     self.tok = "" 
     do { 
      self.progressBar.progress = 100 
      if let jsonResult = try NSJSONSerialization.JSONObjectWithData(data!, options: []) as? NSDictionary { 
       print("ASynchronous\(jsonResult)") 
       if jsonResult.valueForKey("error") != nil{ 
        let alert = UIAlertController() 
        alert.title = "Error" 
        let callFunction = UIAlertAction(title: "Ok", style: UIAlertActionStyle.Cancel, handler: nil) 
        alert.addAction(callFunction) 
        alert.message = String(jsonResult.valueForKey("error")!.valueForKey("message")!) 
        self.presentViewController(alert, animated: true, completion: nil) 
       } else { 
        let alert = UIAlertController() 
        let callFunction = UIAlertAction(title: "Ok", style: UIAlertActionStyle.Cancel, handler: nil) 
        alert.addAction(callFunction) 
        alert.title = jsonResult.valueForKey("outcome")!.valueForKey("seller_message")! as! String 
        var amm = jsonResult.valueForKey("amount")!.floatValue/100 
        alert.message = "Ammount: \(amm) \(jsonResult.valueForKey("currency")!)\n Description: \(jsonResult.valueForKey("description")!)" 
        self.presentViewController(alert, animated: true, completion: nil) 
        self.progressBar.hidden = true 
       } 
      } 
     } catch let error as NSError { 
      self.progressBar.progress = 100 
      print(error.localizedDescription) 
      self.progressBar.hidden = true 
     } 


    }) 

請告訴我的錯誤?你可以幫幫我嗎?

我使用的XCode 7.3.1

+0

你複製了錯誤,但因爲沒有降價表示什麼,既沒有表現出作爲錯誤。我消除了重複和添加減價,使其看起來像「錯誤文本」。 – dfd

回答

0

我瑤池解決方案:

NSURLConnection.sendAsynchronousRequest(request1, queue: queue, completionHandler:{ (response: NSURLResponse?, data: NSData?, error: NSError?) -> Void in 
     self.progressBar.progress = 66.6 
     self.tok = "" 
      self.progressBar.progress = 100 
      if let jsonResult = try? NSJSONSerialization.JSONObjectWithData(data!, options: []) as? NSDictionary { 
       print("ASynchronous\(jsonResult)") 
       if jsonResult!.valueForKey("error") != nil{ 
        let alert = UIAlertController() 
        alert.title = "Error" 
        let callFunction = UIAlertAction(title: "Ok", style: UIAlertActionStyle.Cancel, handler: nil) 
        alert.addAction(callFunction) 
        alert.message = String(jsonResult!.valueForKey("error")!.valueForKey("message")!) 
        self.presentViewController(alert, animated: true, completion: nil) 
       } else { 
        let alert = UIAlertController() 
        let callFunction = UIAlertAction(title: "Ok", style: UIAlertActionStyle.Cancel, handler: nil) 
        alert.addAction(callFunction) 
        alert.title = jsonResult!.valueForKey("outcome")!.valueForKey("seller_message")! as! String 
        var amm = jsonResult!.valueForKey("amount")!.floatValue/100 
        alert.message = "Ammount: \(amm) \(jsonResult!.valueForKey("currency")!)\n Description: \(jsonResult!.valueForKey("description")!)" 
        self.presentViewController(alert, animated: true, completion: nil) 
        self.progressBar.hidden = true 
       } 
     } 
    })