可以使用类型 转换运算符as?, 和将变量向下转换为子类型as!。
该as?运营商尝试投射到一个亚型。
它可能会失败,因此它返回一个可选的。
let value: Any = "John" let name = value as? String print(name) // prints Optional("John") let age = value as? Double print(age) // 打印零
该as!运营商强制铸造。
它不返回可选项,但如果转换失败则会崩溃。
let value: Any = "Paul" let name = value as! String print(name) // prints "Paul" let age = value as! Double // crash: "Could not cast value…"
将类型转换运算符与条件展开一起使用是很常见的:
let value: Any = "George" if let name = value as? String { print(name) // prints "George" } if let age = value as? Double { print(age) // 未执行 }