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)") уже выполнен.

Другие вопросы по тегам