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

时间:2015-01-02 17:13:41

标签: swift

我能编译这个:

if (line == selectedLine) {

}

其中line的类型为Line,而selectedLine是同一类型的可空。

但这失败了:

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

错误Line is not convertible to MirrorDisposition

为什么会这样?

3 个答案:

答案 0 :(得分:1)

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

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

另外,将括号括在条件周围。

答案 1 :(得分:1)

UIColor.greenColor()会返回UIColor个实例。

尝试使用

UIColor.greenColor().CGColor

答案 2 :(得分:0)

很抱歉,错误是我需要从CGColor

获取UIColor.greenColor()媒体资源

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