以下代码给出了xcode 8.2.1中的错误:

UIColor(red: redSwitch.isOn ? 1 : 0, green: greenSwitch.isOn ? 1 : 0, blue: blueSwitch.isOn ? 1 : 0 )

错误是:
“int1”不能转换为“bool”
为什么?redSwitch.isOnif语句条件下工作正常。Apple参考资料。
我怎样才能让这个工作?

最佳答案

这是一条错误消息,但问题只是您缺少来自初始化器的alpha:参数。

let color = UIColor(red: redSwitch.isOn ? 1 : 0, green: greenSwitch.isOn ? 1 : 0,
                    blue: blueSwitch.isOn ? 1 : 0, alpha: 1)

据我所知,奇怪错误消息的来源似乎是在UIColor初始化器调用中使用了三元运算符,其中缺少一个参数。
一个更简单的例子是:
class Foo {
    convenience init(a: Int, b: Int) {}
}

let f = Foo(a: true ? 1 : 0) // 'Int1' is not convertible to 'Bool'

我接着对这个错误提交了一个bug,init(red:green:blue:alpha:)

10-08 07:41