0
私は、オンラインのJSONからいくつかの変数を取得する関数を持っています。その1つはApproved変数で、"true"
に設定されています。私が関数を呼び出すと、コードが非同期ではないので、Approved変数には値がないので、最初に "拒否"アラートが表示されますが、何をするにしても動作させることはできません。 2回目までに以前の値が保存され、成功アラートが表示されます。非同期ではないコードを選択する
コード:
@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