从 AnyObject 转换为 CGColor?没有错误或警告

Casting from AnyObject to CGColor? without errors or warnings

你好 Whosebug :)

自从我升级到 swift 2.0

后,我一直 运行 遇到一个奇怪的问题

我正在尝试设置边框颜色,所以我写了 self.layer.borderColor = borderColor as! CGColor,其中 borderColor 是 AnyObject,而 self.layer.borderColor 是 CGColor?

如果我写 self.layer.borderColor = borderColor as! CGColor 我会收到警告

Treating a forced downcast to 'CGColor' as optional will never produce 'nil'

,建议改用 as?

如果我改写 self.layer.borderColor = borderColor as? CGColor 我会得到错误

Conditional downcast to CoreFoundation type 'CGColor' will always succeed

为了确保我没有遗漏某些东西,我还尝试编写 container.layer.borderColor = borderColor as CGColorcontainer.layer.borderColor = borderColor 这两个都给出了以下错误:

'AnyObject' is not convertible to 'CGColor'; did you mean to use 'as!' to force downcast?

只是 运行 XCode 在使用 as! 时给出的警告并不是那么糟糕,但我宁愿让我的代码警告免费。为了确保我真的需要你的帮助。这是我不理解的东西,还是我应该报告的 Swift 2.0 中的一个错误。

干杯!

雅各

xcode 也给了我以下提示:

Add parentheses around the cast to silence this warning

嗯...当xcode这么说时...

layer.borderColor = (borderColor as! CGColor)

你使用的图层颜色是核心图形,你需要用属性 cgColor

设置核心图形颜色
layer.borderColor = UIColor.red.cgColor

是的,这是一个众所周知的错误,但仍未解决! Unnecessary message for non-optional to non-optional cast

如果您不喜欢警告,您应该遵循 Xcode 建议:

Add parentheses around the cast to silence this warning.