Swift: установка значения переменной внутри UIAlertAction
Я объявляю переменную, а затем пытаюсь установить ее значение внутри UIAlertAction. Когда я нажимаю кнопку "Я иду туда" В приведенном ниже коде вывод:
1 thisCustomerRequesting: true
3 thisCustomerRequesting: false
Можете ли вы сказать, почему строка "2 thisCustomerRequesting: ...." отсутствует в выводе и почему "3 thisCustomerRequesting: false" имеет значение "ложь", хотя я ожидаю, что она будет истинной.
var thisCustomerRequesting = false
if thisCustomerRequesting == false {
let alert = UIAlertController(title: "title", message: "message", preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "I am going there", style: .destructive, handler: {
(alertAction1: UIAlertAction) in
thisCustomerRequesting = true
print("1 thisCustomerRequesting: \(thisCustomerRequesting)")
}))
alert.addAction(UIAlertAction(title: "Close", style: .default,handler: nil))
self.present(alert, animated: true, completion: nil)
print("2 thisCustomerRequesting: \(thisCustomerRequesting)")
}
print("3 thisCustomerRequesting: \(thisCustomerRequesting)")
1 ответ
Решение
Выход 2 должен быть в вашей консоли, но выше 1 thisCustomerRequesting: true
,
Выход 3 говорит 3 thisCustomerRequesting: false
так как thisCustomerRequesting
устанавливается на true
асинхронно, когда пользователь нажимает кнопку.
В это время print("3 thisCustomerRequesting: \(thisCustomerRequesting)")
уже выполнен.