Ios Alamofire数据不能立即使用
当我从alamofire获取数据时,它还没有完全加载,在此之前,我下面的代码正在执行,我不知道如何在其中使用完成处理程序,我是iOS编程新手,请任何人帮助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
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},我也需要实现这些语句