相关疑难解决方法(0)

无法从 Swift 字典中检索 CGColor

我需要一个可以存储任何类型对象的 Swift 字典。一些值将作为CGColor参考。我在创建字典和存储CGColor参考文献方面没有问题。问题是试图安全地让他们回来。

let color = CGColor(gray: 0.5, alpha: 1)
var things = [String:Any]()
things["color"] = color
things["date"] = Date()
print(things)
Run Code Online (Sandbox Code Playgroud)

那行得通,我得到了合理的输出。后来我希望得到颜色(字典中可能存在也可能不存在。所以我很自然地尝试以下操作:

if let color = things["color"] as? CGColor {
    print(color)
}
Run Code Online (Sandbox Code Playgroud)

但这会导致错误:

错误:有条件地向下转换为 CoreFoundation 类型“CGColor”将始终成功

最后我想出了:

if let val = things["color"] {
    if val is CGColor {
        let color = val as! CGColor
        print(color)
    }
}
Run Code Online (Sandbox Code Playgroud)

这在操场上没有任何警告,但在我的实际 Xcode 项目中,我在线上收到警告if val is CGColor

'is' 测试总是正确的,因为 'CGColor' 是一个 Core Foundation 类型

这个问题有什么好的解决办法吗?

我正在处理核心图形和图层,代码需要同时适用于 iOS 和 …

macos core-graphics core-foundation ios swift

1
推荐指数
1
解决办法
879
查看次数

标签 统计

core-foundation ×1

core-graphics ×1

ios ×1

macos ×1

swift ×1