0
我有一个从在线JSON抓取几个变量的函数,其中一个是Approved变量,它被设置为"true"
。当我调用函数时,第一次我会得到“Denied”警告,因为Approved变量没有值,因为代码不是异步的,但不管我做了什么,我都无法让它工作。直到第二次它保存了以前的值并转到成功警报。选择不是异步的代码
代码:
@IBAction func approveuser(_ sender: AnyObject) {
theplace = place //Saving variable.
Alamofire.request("https://example.com?variable=\(variable)&requested=\(self.place)").responseJSON{ response in
if let JSON = response.result.value{
let json = JSON as! NSDictionary
Approved = json["Approved"] as! String
LoadedVersion = json["version"] as! String
}
}
if(AppVersion != LoadedVersion){
self.showalert("Update Required", message: "Please update the app", confirm: "Okay")
return
}
if(Approved == "true"){
self.showalert("Approved!", message: "Success", confirm: "Okay")
}else{
self.showalert("Denied!", message: "Denied", confirm: "Okay")
}
}
我试图把DispatchQueue.main.async {
的地方我可以在代码,但它仍然不希望工作无论在哪里我把它。
你应该真的拥抱异步性,并在回调中做你的东西。如果您真的必须等待,请尝试使用http://stackoverflow.com/a/38758847/14955中的信号量 – Thilo