如何在Swift中获得Bool的相反值?

时间:2014-09-14 02:47:17

标签: ios swift boolean

我的具体情况是我试图将导航栏隐藏并显示。

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

对我来说不像通常在Obj-C中那样。

3 个答案:

答案 0 :(得分:15)

感叹号位于布尔值的错误一侧。你写它的方式表明布尔值可能是零。你想要的!navHidden。

答案 1 :(得分:3)

navHidden!是为了确保这不是可选的。 !navHidden是正确的方法。

来自Apple的book

  

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

答案 2 :(得分:1)

navHidden是可选的。并且你明确地解开了那个可选项(这意味着如果navHidden为nil你会崩溃)。显然这里有些不对劲。我建议

if let navController = self.navigationController {
    let navHidden = navController.navigationBarHidden
    navController.setNavigationBarHidden (!navHidden, animated:true)
}