【问题标题】:How can I get the opposite value of a Bool in Swift?如何在 Swift 中获得 Bool 的相反值?
【发布时间】:2014-11-07 21:24:50
【问题描述】:

我的具体情况是我试图切换导航栏隐藏和显示。

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

不像通常在 Obj-C 中那样为我工作。

【问题讨论】:

    标签: ios swift boolean


    【解决方案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

      尝试使用!访问不存在的可选值会触发运行时错误。在使用之前,请务必确保可选项包含非零值!强制解包它的值。

      【讨论】:

        猜你喜欢
        • 2020-03-04
        • 2011-10-25
        • 2014-12-18
        • 2012-12-17
        • 2020-05-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-12-15
        相关资源
        最近更新 更多