Nik*_*kin 7 casting optional swift
假设我有一段这样的代码:
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)
| 归档时间: | 
 | 
| 查看次数: | 1790 次 | 
| 最近记录: |