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

Jac*_*b R 6 casting compiler-warnings cgcolor ios anyobject

你好StackOverflow :)

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

我正在尝试设置边框颜色,所以我正在写self.layer.borderColor = borderColor as! CGColorborderColor是一个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 CGColorcontainer.layer.borderColor = borderColor这两个都给出了以下错误:

'AnyObject'不能转换为'CGColor';您是要使用“ as!”吗?强迫垂头丧气?

仅在使用时使用XCode给出的警告运行as!并不十分糟糕,但我希望保持我的代码警告自由。我真的很需要您的帮助。这是我不了解的东西,还是我应该报告的Swift 2.0中的错误。

干杯!

雅各布

And*_*tta 5

xcode还给我以下提示:

在演员表周围加上括号以使此警告静音

好...当xcode这么说...

layer.borderColor = (borderColor as! CGColor)
Run Code Online (Sandbox Code Playgroud)

  • 这只会使警告消失,并不能解决根本问题。我自己正在寻找正确的答案,所以我不知道它是什么,但我不认为就是这样。 (2认同)

Shu*_*Din 5

您正在使用作为核心图形的图层颜色,您需要使用属性cgColor设置核心图形颜色

layer.borderColor = UIColor.red.cgColor
Run Code Online (Sandbox Code Playgroud)