Hello StackOverflow:)
自从我升级到swift 2.0后,我一直遇到一个奇怪的问题
我正在尝试设置边框颜色,所以我写的是self.layer.borderColor = borderColor as! CGColor
,其中borderColor是AnyObject
,而self.layer.borderColor是CGColor?
如果我写self.layer.borderColor = borderColor as! CGColor
,我会收到警告
将强制向下转换为'CGColor'作为可选项永远不会产生'nil'
,建议改为使用as?
如果我改为写self.layer.borderColor = borderColor as? CGColor
,我会收到错误
条件向下转换为CoreFoundation类型'CGColor'将始终成功
为了确保我没有遗漏某些内容,我还尝试撰写container.layer.borderColor = borderColor as CGColor
和container.layer.borderColor = borderColor
这两项都出现了以下错误:
'AnyObject'不能转换为'CGColor';你的意思是用'as!'迫使低垂?
使用as!
时使用XCode提供的警告并不是那么可怕,但我更愿意保持我的代码免费警告。为了说明我真的需要你的帮助。这是我不理解的东西,还是仅仅是我应该报告的Swift 2.0中的一个错误。
干杯!
雅各
答案 0 :(得分:5)
xcode还给了我以下提示:
好吧......当xcode这么说......在演员表周围添加括号以使此警告静音
layer.borderColor = (borderColor as! CGColor)
答案 1 :(得分:4)
您正在使用图层颜色,这是核心图形,您需要使用属性cgColor设置核心图形颜色
layer.borderColor = UIColor.red.cgColor
答案 2 :(得分:1)
是的,这是一个众所周知的错误,并且仍然没有解决! Unnecessary message for non-optional to non-optional cast
如果您不喜欢警告,则应遵循Xcode的建议:
在演员表上加上括号以使该警告消失。