Ios Alamofire数据不能立即使用

Ios Alamofire数据不能立即使用,ios,swift,alamofire,completionhandler,Ios,Swift,Alamofire,Completionhandler,当我从alamofire获取数据时,它还没有完全加载,在此之前,我下面的代码正在执行,我不知道如何在其中使用完成处理程序,我是iOS编程新手,请任何人帮助 func mobileVerification(mobileNumber:String)->Bool{ let params:[String:String] = ["mobile_num":mobileNumber] Alamofire.request("*************",method:.p

当我从alamofire获取数据时,它还没有完全加载,在此之前,我下面的代码正在执行,我不知道如何在其中使用完成处理程序,我是iOS编程新手,请任何人帮助

func mobileVerification(mobileNumber:String)->Bool{

        let params:[String:String] = ["mobile_num":mobileNumber]
        Alamofire.request("*************",method:.post,parameters:params,encoding: URLEncoding.httpBody).responseJSON { response in

               var loginMessage = ""
                if let jdata = response.data, let utf8Text = String(data: jdata, encoding: .utf8) {

                    let json = JSON(data:jdata)
                    print(json)
                    let array = json["result"].arrayValue
                    print(array[0]["message"])

                    if let loginMessage = array[0]["message"].string{
                        self.view.makeToast(loginMessage)
                    }


                }


            }
        if loginMessage == "success"
        {

            //performSegue(withIdentifier: "reg2mobileverification", sender: nil)
            return true
        }
        else
        {
            self.view.makeToast("LoginFailed")
            //print("login Failed")
            return false
        }


    }

您必须在Alamofire方法中实现的闭包中处理数据:

Alamofire.request("*************",method:.post,parameters:params,encoding: URLEncoding.httpBody).responseJSON { response in

               var loginMessage = ""
                if let jdata = response.data, let utf8Text = String(data: jdata, encoding: .utf8) {
                    // IN THIS BLOCK YOU HAVE TO PROCESS RECEIVED DATA AND IMPLEMENT BUSINESS LOGIC
                    let json = JSON(data:jdata)
                    print(json)
                    let array = json["result"].arrayValue
                    print(array[0]["message"])

                    if let loginMessage = array[0]["message"].string{
                        self.view.makeToast(loginMessage)
                    }


                }


            }

当接收到数据时,此闭包将异步执行。

您必须处理在Alamofire方法中实现的闭包中的数据:

Alamofire.request("*************",method:.post,parameters:params,encoding: URLEncoding.httpBody).responseJSON { response in

               var loginMessage = ""
                if let jdata = response.data, let utf8Text = String(data: jdata, encoding: .utf8) {
                    // IN THIS BLOCK YOU HAVE TO PROCESS RECEIVED DATA AND IMPLEMENT BUSINESS LOGIC
                    let json = JSON(data:jdata)
                    print(json)
                    let array = json["result"].arrayValue
                    print(array[0]["message"])

                    if let loginMessage = array[0]["message"].string{
                        self.view.makeToast(loginMessage)
                    }


                }


            }
当收到数据时,将异步执行此关闭。

Swift 3.0 这是一个异步请求,只能使用完成块方法(闭包)重新运行。 你可以尝试这个返回真或假,希望这将帮助你

func mobileVerification(mobileNumber:String,completion:@escaping(Bool) -> Void) {
   
    let params:[String:String] = ["mobile_num":mobileNumber]
    Alamofire.request("*************",method:.post,parameters:params,encoding: URLEncoding.httpBody).responseJSON { response in
        
        if let jdata = response.data, let utf8Text = String(data: jdata, encoding: .utf8) {
            
            let json = JSON(data:jdata)
            print(json)
            let array = json["result"].arrayValue
            print(array[0]["message"])
            
            if let loginMessage = array[0]["message"].string{
                
                if loginMessage == "success"
                {
                    self.view.makeToast(loginMessage)
                    completion(true)
                }
                else
                {
                    self.view.makeToast("LoginFailed")
                    completion(false)
                }
            }
        }
    }
}
使用Clouser:-

mobileVerification(mobileNumber: "1234567890") { (result) in
            if result {
               performSegue(withIdentifier: "reg2mobileverification", sender: nil) 
            }
}
Swift 3.0 这是一个异步请求,只能使用完成块方法(闭包)重新运行。 你可以尝试这个返回真或假,希望这将帮助你

func mobileVerification(mobileNumber:String,completion:@escaping(Bool) -> Void) {
   
    let params:[String:String] = ["mobile_num":mobileNumber]
    Alamofire.request("*************",method:.post,parameters:params,encoding: URLEncoding.httpBody).responseJSON { response in
        
        if let jdata = response.data, let utf8Text = String(data: jdata, encoding: .utf8) {
            
            let json = JSON(data:jdata)
            print(json)
            let array = json["result"].arrayValue
            print(array[0]["message"])
            
            if let loginMessage = array[0]["message"].string{
                
                if loginMessage == "success"
                {
                    self.view.makeToast(loginMessage)
                    completion(true)
                }
                else
                {
                    self.view.makeToast("LoginFailed")
                    completion(false)
                }
            }
        }
    }
}
使用Clouser:-

mobileVerification(mobileNumber: "1234567890") { (result) in
            if result {
               performSegue(withIdentifier: "reg2mobileverification", sender: nil) 
            }
}

如果loginMessage==“success”{//performsgue(带有标识符:“reg2mobileverification”,sender:nil)返回true}或者{self.view.makeToast(“LoginFailed”)//print(“login Failed”)返回false},我也需要实现这些语句如果loginMessage==“success”{//performsgue(带有标识符:“reg2mobileverification”,sender:nil)返回true}或者{self.view.makeToast(“LoginFailed”)//print(“login Failed”)返回false},我也需要实现这些语句