Swift-可选项

Swift中新增加了可选项,用问号’?’来表示,那我们如何运用和理解了?

定义

可选项的主要目的就是为了解决‘有’和‘无’的问题。表示变量可以为nil,或者一个值。而且它只明定义,没有分配空间和初始化。定义属性只需要在后面加上?如:var label : UILabel?

解包

Swift是特别在意安全性问题的,对可选项可以进行强行解包和可选解包。

强行解包

用问号’!’来表示,强行解包后的值主要是为了参与计算,但是强行解包存在着风险,当为nil时,程序运行会崩溃,所以需要判断好是否为nil。

可以用 guard let / if let 来处理解包问题,简化代码。

可选解包

用问号’?’来表示,不能参与计算。但可以用来调用方法,它的意思是如果对象存在不为空时就调用对象的方法,如果对象为nil,就什么也不用做,程序也不会崩溃。

类型转化

as?

  • 用as?进行转化的话,得到的结果是可选的
  • 用guard let / if let时 一定要用 as? 来修饰

as!

前面的结果一定要有正确值,不然会崩溃,在使用时就需要程序员考虑值的安全性。

as

OC和Swift的类型转化,底层做了结构体和OC的对象桥接

NSSString -> String
NSArray -> []
NSDictionary -> [string : Any]

将父类转化成子类,或者将子类转化成父类时候需要类型转化,因为要调用子类或者父类的方法。

Swift调用OC的类或者方法时。