Swift语言类型转换可以判断实例的类型,也可以用于检测实例类型是都属于其父类或者子类的实例。Swift中类型转换使用is和as操作符实现,is用于检测值得类型,as用于转换类型。类型转换也可以用来检查一个类是否实现了某个协议。
检查类型
类型转换用于检测实例类型是否属于特定的实例类型。类型价差使用is关键字,来检查一个实例是否属于特定子类型,若实例属于那个子类型,返回true,否则返回false
1 | class Subjects{ |
向下转型
向下转型:使用类型转换操作符(as? 或 as!)
- 不确定向下转型是否成功,使用as?,返回一个可选值。
- 确定向下转型成功,使用as!,返回一个对应类型。如果不确定情况下强制使用as!转型,会触发一个运行时错误
1 | class Subjects{ |
Any和AnyObject的类型转换
Swift为不确定类型提供了两种特殊类型别名:
- AnyObject可以代表任何class类型的实例
- Any可以表示任何类型,包括方法类型(function types)
注意:只有当你明确的需要它的行为和功能是才使用Any和AnyObject
Any实例
1 | class Subjects{ |
在switch语句的case中使用强制形式的类型转换操作符(as,而不是as?)来检查和转换一个明确的类型
AnyObject实例
1 | class Subjects{ |
强制类型转换
1 | var intValue:Int = 10 |
参考: