gpt4 book ai didi

ios - XCode Fix-it 建议强制解包 bool 值?

转载 作者:搜寻专家 更新时间:2023-11-01 07:30:02 25 4
gpt4 key购买 nike

我试着这样写:

cardVC.hideStatusBar = rootNavController?.prefersStatusBarHidden()

但是 XCode 7.0 报错:

可选类型 'Bool?' 的值未展开;你是不是想用'!'或“?”?

我点击了建议的修复,它变成了:

cardVC.hideStatusBar = (rootNavController?.prefersStatusBarHidden())!

将语句包裹在括号中并添加 ! 究竟有什么作用?我知道这股力量会解开它。如果 rootNavController != nil,那么那里会有一个 BOOL 值。但是,如果 rootNavController 为 nil,那么我的原始语句 rootNavController?.prefersStatusBarHidden() 是否只返回 0(或 false),这就是我们可以强制展开它的原因,本质上是返回如果为零则为假?

最佳答案

If rootNavController != nil, then there will be a BOOL value there

正确。

If rootNavController is nil, then does my original statement rootNavController?.prefersStatusBarHidden() just return 0 (or false)

没有。原始语句将返回 nil。该语句可以理解为“如果 rootNavController 不是 nil,则返回 rootNavController.prefersStatusBarHidden()。否则返回 nil”。

正如评论中所指出的,在解包可选时提供默认值的快捷方式是通过 nil coalescing operator : cardVC.hideStatusBar = rootNavController?.prefersStatusBarHidden() ??错误。此语句执行您想象的操作,可以理解为“如果 rootNavController 不是 nil,则返回 rootNavController.prefersStatusBarHidden()。否则返回 false ".

强制展开可选项是不同的。 rootNavController?.prefersStatusBarHidden() 返回一个可选值,rootNavController!.prefersStatusBarHidden() 总是返回一个非零值(在本例中为 bool)。用 nil 值强制解包一个可选值会在运行时使你的程序崩溃。

同样,您的强制展开语句可以理解为“如果 rootNavController 不是 nil,则返回 rootNavController.prefersStatusBarHidden()。否则崩溃”。

在我对 this question 的回答中我对可选值和强制展开做了一个简短的解释,你可能想看看。

关于ios - XCode Fix-it 建议强制解包 bool 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33131185/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com