如何在 Swift 中获得 Bool 的相反值?
Posted
技术标签:
【中文标题】如何在 Swift 中获得 Bool 的相反值?【英文标题】:How can I get the opposite value of a Bool in Swift? 【发布时间】:2014-11-07 21:24:50 【问题描述】:我的具体情况是我试图切换导航栏隐藏和显示。
let navHidden = !self.navigationController?.navigationBarHidden
self.navigationController?.setNavigationBarHidden(navHidden!, animated: true)
不像通常在 Obj-C 中那样为我工作。
【问题讨论】:
【参考方案1】:navHidden 是可选的。并且您明确地解开该可选选项(这意味着如果 navHidden 为 nil,您会崩溃)。显然这里出了点问题。我建议
if let navController = self.navigationController
let navHidden = navController.navigationBarHidden
navController.setNavigationBarHidden (!navHidden, animated:true)
【讨论】:
【参考方案2】:感叹号在布尔值的错误一侧。您编写它的方式表明布尔值可能为零。你想要 !navHidden。
【讨论】:
谢谢!我并没有试图将其反转两次。除非我有它,否则它不会编译!在右边。这对我有用: let navHidden = self.navigationController?.navigationBarHidden self.navigationController?.setNavigationBarHidden(!navHidden!, animated: true) 啊,明白了。删除了我评论的那部分。【参考方案3】:navHidden!
是为了确保这不是可选的。 !navHidden
是这样做的正确方法。
来自 Apple 的 book。
尝试使用!访问不存在的可选值会触发运行时错误。在使用之前,请务必确保可选项包含非零值!强制解包它的值。
【讨论】:
以上是关于如何在 Swift 中获得 Bool 的相反值?的主要内容,如果未能解决你的问题,请参考以下文章
如何绑定 Bool 值(我从服务器获得)以在 SwiftUI 中隐藏/显示警报?