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

swift – 是否可以将Any转换为Optional?

发布时间:2020-12-14 05:03:32 所属栏目:百科 来源:网络整理
导读:假设我有一段这样的代码: let x: Int? = 10 let y: Any = x 现在我想把y转换成Int?: let z = y as Int? // Error: Cannot downcast from 'Any' to a more optional type 'Int?' 这是不可能还是有另一种方式? 解决方法 对于Swift 2.0,您可以使用以下内容
假设我有一段这样的代码:

let x: Int? = 10  
let y: Any = x

现在我想把y转换成Int?:

let z = y as Int? // Error: Cannot downcast from 'Any' to a more optional type 'Int?'

这是不可能还是有另一种方式?

解决方法

对于Swift 2.0,您可以使用以下内容:

let x: Int? = 10
let y: Any = x
let z = Mirror(reflecting: y).descendant("Some") as? Int

或者作为一个功能:

func castToOptional<T>(x: Any) -> T? {
    return Mirror(reflecting: x).descendant("Some") as? T
}
let x: Int? = 10
let y: Any = x
let z: Int? = castToOptional(y)

或者你可以这样做,如果你不喜欢反射:

func castToOptional<T>(x: Any) -> T {
    return x as! T
}
let x: Int? = 10
let y: Any = x
let z: Int? = castToOptional(y)

(编辑:李大同)

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

    推荐文章
      热点阅读