У меня есть функция, которая захватывает пару переменных из онлайн-JSON, одна из которых является переменной Approved, которая установлена в "true"
. Когда я вызываю функцию, в первый раз я получу предупреждение «Отклонено», поскольку переменная 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