11

你好 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 中的一个错误。

干杯!

雅各布

4

3 回答 3

9

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

layer.borderColor = UIColor.red.cgColor
于 2017-09-27T14:43:12.710 回答
6

xcode 还给了我以下提示:

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

好吧...当xcode这么说时...

layer.borderColor = (borderColor as! CGColor)
于 2015-11-07T23:57:52.263 回答
2

是的,这是一个众所周知的错误,但仍未解决!非可选到非可选转换的不必要消息

如果你不喜欢这个警告,你应该遵循 Xcode 的建议:

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

于 2018-10-09T15:05:07.103 回答