与bool无法合并运算符

时间:2015-04-02 09:47:06

标签: ios swift

我正在尝试将som Objective-C代码转换为swift,并且我有以下声明,我坚持使用。

我将如何转换:

self.viewController.view.alpha = !self.viewDisabled ?: 0;
快点?

viewController.view.alpha = !self.viewDisabled ?? 0

Swift中的空合并运算符似乎正常工作,因为我得到了一个"二元运算符''不能应用于类型' bool'" 错误的操作数。 我究竟做错了什么?

2 个答案:

答案 0 :(得分:2)

Nil-coalescing operator与布尔值无关。

使用完整形式的三元运算符:

viewController.view.alpha = viewDisabled ? 0 : 1

答案 1 :(得分:2)

Nil coalescing用于可选变量。如文件中所述,零合并对应于:

a != nil ? a! : b    //if a has value, return unwrapped value of a, else return b

考虑这些例子:

var optionalBoolean : Bool? //don't have value (or == nil)
var falseBoolean : Bool = false

var a = optionalBoolean ?? true //return true cause optionalBoolean does not have value, so it return 'true'
var b = falseBoolean ?? true //return false cause falseBoolean has value = false.