swift - 确定 Any.Type 是否可选

标签 swift dynamic

我正在尝试确定给定类型 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 开始)不支持 covariance nor contravariance无法直接针对 Optional.Type 进行类型检查:

// Argument for generic parameter 'Wrapped' could not be inferred
anyType is Optional.Type // Causes error

另一种方法是使 Optional 扩展一个特定的协议(protocol),并检查该类型:

protocol OptionalProtocol {}

extension Optional : OptionalProtocol {}

let anyType: Any.Type = Optional<String>.self
anyType is OptionalProtocol.Type // true

关于swift - 确定 Any.Type 是否可选,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32536420/

相关文章:

swift - 当我点击单元格时,collectionView 内的 View 没有隐藏

ios - 搜索栏在 IOS 应用程序 swift 3 中不起作用

swift - Framework Pod 说库未加载

Delphi:如何使用 DynArraySetLength 设置 RTTI 访问的动态数组的长度?

flutter - 我想为 ListView 中的每个特定项目创建动画

string - 使用动态编程查找字符串中最长的单词?

ios - 约束更改后 UITableView 水龙头第一次不工作

swift - 如何在 swift 中的字典中插入值

javascript - JavaScript 中的精确动态 SVG 用于行为实验

ios - 使用 NSString 以编程方式访问或创建 Objective-C 中的方法