"if" 和三元运算符的不同行为

Different behavior with "if" and the ternary operator

我可以编译这个:

if (line == selectedLine) {

}

其中 lineLine 类型,而 selectedLine 是同一类型的可空类型。

但这失败了:

layer.strokeColor = (line == selectedLine ? UIColor.greenColor() : line.color.CGColor)

错误 Line is not convertible to MirrorDisposition

这是为什么?

您正在尝试将图层描边颜色设置为 UIColor。您应该像在第二种情况下那样使用 .CGColor

Swift 中的错误消息并不总是最有用的。

此外,仅将条件放在方括号中。

抱歉,错误是我需要从 UIColor.greenColor()

获取 CGColor 属性

再一次,Swift 编译器的消息似乎不可靠...

UIColor.greenColor() returns 一个 UIColor 实例。

尝试使用

UIColor.greenColor().CGColor