以下代码给出了xcode 8.2.1中的错误:
UIColor(red: redSwitch.isOn ? 1 : 0, green: greenSwitch.isOn ? 1 : 0, blue: blueSwitch.isOn ? 1 : 0 )
错误是:
“int1”不能转换为“bool”
为什么?
redSwitch.isOn
在if
语句条件下工作正常。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:)
。