我怎么能得到一个布尔在Swift中相反的价值?
我的具体情况是我想切换导航栏隐藏和显示。
let navHidden = !self.navigationController?.navigationBarHidden self.navigationController?.setNavigationBarHidden(navHidden!, animated: true)
Obj-C通常不会像我一样为我工作。
感叹号是在布尔的错误的一面。 你写的方式会表明布尔值可能为零。 你想!navHidden。
navHidden!
是确保这不是可选的。 !navHidden
是正确的方法来做到这一点。
从苹果的书 。
试着用! 访问不存在的可选值会触发运行时错误。 在使用之前,一定要确保一个可选项包含非零值! 强迫 – 打开它的价值。
navHidden是可选的。 你明确地解开这个可选的(这意味着如果navHidden为零,你会崩溃)。 显然这里有什么不对劲。 我build议
if let navController = self.navigationController { let navHidden = navController.navigationBarHidden navController.setNavigationBarHidden (!navHidden, animated:true) }