Как я могу получить противоположное значение Bool в Swift?

ios swift boolean

11642 просмотра

3 ответа

Мой конкретный случай - я пытаюсь переключить навигационную панель, скрытую и показывающую.

    let navHidden = !self.navigationController?.navigationBarHidden
    self.navigationController?.setNavigationBarHidden(navHidden!, animated: true)

Не работает для меня, как обычно, в Obj-C.

Автор: SirRupertIII Источник Размещён: 12.11.2019 09:14

Ответы (3)


15 плюса

Решение

Восклицательный знак находится на неправильной стороне логического. То, как вы это написали, будет означать, что логическое значение может быть нулевым. Вы хотите! NavHidden.

Автор: Ideasthete Размещён: 14.09.2014 02:49

3 плюса

navHidden!чтобы убедиться, что это не является обязательным. !navHiddenэто правильный способ сделать это.

Из книги Apple .

Пытаюсь использовать! доступ к несуществующему необязательному значению вызывает ошибку времени выполнения. Всегда убедитесь, что необязательный параметр содержит ненулевое значение перед использованием! принудительно развернуть его значение.

Автор: fantasticfears Размещён: 14.09.2014 02:55

1 плюс

navHidden является необязательным. И вы явно разверните этот необязательный (что означает, что вы получите сбой, если navHidden равен нулю). Очевидно, что-то здесь не так. Я предлагаю

if let navController = self.navigationController {
    let navHidden = navController.navigationBarHidden
    navController.setNavigationBarHidden (!navHidden, animated:true)
}
Автор: gnasher729 Размещён: 26.10.2015 09:15
Вопросы из категории :
32x32