本文介绍了等待AlamoFire迅速回应的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在执行函数之前,我需要等待response.response?.allHeaderFields数据。我在网上搜索过,但不太明白如何在alamofire请求中添加"完成处理程序"。或者是否有任何其他方法可以让函数等待。
@IBAction func comfirmation(sender: UIButton) { if CodeTextField.text != "" { print("in comfirmation function") let comfirmationRequestData = [ "phone" : "(appDelegate.savedNumber)", "code" : "(CodeTextField.text!)" ] Alamofire.request(.POST, "192.168.214.241:4000/login", parameters: comfirmationRequestData, encoding: .JSON).responseJSON { response in switch response.result { case .Success: let jsonDecrypted = JSON(response.result.value!) print(jsonDecrypted) let headerFile = response.response?.allHeaderFields as? [String:String] print(headerFile) case .Failure(let error): print(error) } } print("in comfirmation function. success") appDelegate.defaults.setValue(appDelegate.savedNumber, forKey: "phoneNumber") } else { print("in comfirmation function. failed") } } 推荐答案按如下方式使用AlamoFire
func postRequest( urlSuffix : String, params:[String : AnyObject]?, filterParams : [String]?, success: (response: AnyObject!) -> Void, failure: (error: NSError?) -> Void) { Alamofire.request(.POST, webServicesURLPrefix + urlSuffix, parameters: params, encoding: .JSON, headers: self.headers) request?.responseJSON { response in switch response.result { case .Success: success(response: response.result.value) case .Failure(let error): failure(error: error) } } }以
方式从任何位置调用该方法 self.postRequest("do-registration.php", params: params, filterParams: nil, success: { (response) -> Void in self.afterResponse(response) }) { (error) -> Void in failure(error: error) }或者您可以编写一个aserate方法,您必须在完成后调用该方法。
func afterResponse(responseData : AnyObject) { print("Done") print(responseData) }更多推荐
等待AlamoFire迅速回应
发布评论