从AnyObject投射到CGColor? 没有错误或警告

你好,StackOverflow 🙂

自升级到swift 2.0以来,我一直在遇到一个奇怪的问题

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

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

处理强制downcast到“CGColor”作为可选将永远不会产生“零”

并build议改为使用as?

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

对CoreFoundationtypes“CGColor”的条件降级将始终成功

只是为了确保我没有丢失的东西,我也试着写container.layer.borderColor = borderColor as CGColorcontainer.layer.borderColor = borderColor这两个都给了以下错误:

“AnyObject”不能转换为“CGColor”; 你的意思是使用“as!” 强迫低调?

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

干杯!

雅各

xcode也给了我下面的提示:

在演员阵容周围加上圆括号来消除这个警告

嗯…当xcode这样说…

 layer.borderColor = (borderColor as! CGColor) 

您正在使用图层颜色,它是核心graphics,您需要使用属性cgColor设置核心graphics颜色

 layer.borderColor = UIColor.red.cgColor