处理“NSURLConnection.sendAsynchronousRequest”

时间:2017-04-26 11:50:33

标签: swift

当我执行NSURLConnection.sendAsynchronousRequest时,它总是显示相同的错误:

  

来自类型'(NSURLResponse?,NSData?,NSError?)的抛出函数的无效转换抛出 - > Void'到非投掷函数类型'(NSURLResponse?,NSData?,NSError?) - >无效“”

这是代码:

    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

1 个答案:

答案 0 :(得分: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
                }
        }
    })