当前位置 : 主页 > 手机开发 > 其它 >

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

来源:互联网 收集:自由互联 发布时间:2021-06-11
如何在 Swift中检查类型是否为Optional? 假设我有一个PartialKeyPath类型的变量,其中: struct Foo { let bar: String let baz: String?}typealias PropertyRoot = (key: PartialKeyPathRoot, value: Any?)typealias PropertiesRo
如何在 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
网友评论