2017-04-26 88 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 
       } 
     } 
    })