等待回应Alamofire迅速

Jui*_*uit 2 response synchronous ios swift 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,
            "http://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")
    }

}
Run Code Online (Sandbox Code Playgroud)

Ami*_*ngh 5

像这样使用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)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

从任何地方调用该方法

self.postRequest("do-registration.php", params: params, filterParams: nil, success: { (response) -> Void in
        self.afterResponse(response)
        }) { (error) -> Void in
            failure(error: error)
    }
Run Code Online (Sandbox Code Playgroud)

或者,您可以编写一个saperate方法,完成后必须调用该方法。

func afterResponse(responseData : AnyObject)
{
    print("Done")
    print(responseData)
}
Run Code Online (Sandbox Code Playgroud)