从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 CGColor
和container.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