我正在尝试确定给定类型t(Any.Type)是否为可选类型,我正在使用此测试
t
Any.Type
t is Optional<Any>.Type
但它始终返回false。
那么有什么办法可以做到这一点?
假设您要执行的操作是这样的:
let anyType: Any.Type = Optional<String>.self anyType is Optional<Any>.Type // false
可悲的是,swift当前(从Swift 2开始)不支持协方差和协变,并且不能直接针对类型进行类型检查Optional.Type:
Optional.Type
// Argument for generic parameter 'Wrapped' could not be inferred anyType is Optional.Type // Causes error
一种替代方法是使Optional特定协议扩展,并检查该类型:
Optional
protocol OptionalProtocol {} extension Optional : OptionalProtocol {} let anyType: Any.Type = Optional<String>.self anyType is OptionalProtocol.Type // true