如何在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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |