加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何在Swift中检查类型是否为Optional?

发布时间:2020-12-14 04:38:44 所属栏目:百科 来源:网络整理
导读:如何在 Swift中检查类型是否为Optional? 假设我有一个PartialKeyPath类型的变量,其中: struct Foo { let bar: String let baz: String?}typealias PropertyRoot = (key: PartialKeyPathRoot,value: Any?)typealias PropertiesRoot = [PropertyRoot] 现在说
如何在 Swift中检查类型是否为Optional?

假设我有一个PartialKeyPath类型的变量,其中:

struct Foo {
    let bar: String
    let baz: String?
}

typealias Property<Root> = (key: PartialKeyPath<Root>,value: Any?)
typealias Properties<Root> = [Property<Root>]

现在说我通过一个Properties实例迭代:

properties.forEach { prop in
    let valueType1 = type(of: prop.key).valueType
    let valueType2 = type(of: value)

    ...

我如何在此处检查valueType1是否为Optional< valueType2>,或者它是否为可选的其他任何风格?

到目前为止,我找到的唯一方法真的很难看……

解决方法

这是一个hacky但工作的解决方案:

func isOptional(_ type: Any.Type) -> Bool {
    let typeName = String(describing: type)
    return typeName.hasPrefix("Optional<")
}

测试:

let t1 = Int?.self
let t2 = Bool.self

print(isOptional(t1))
// true

print(isOptional(t2))
// false

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读