首页 > 代码库 > Swift::3::可选值

Swift::3::可选值

可选值(Optional)

在OC,一个class类型的变量,其值既可为一个有效的对象,亦可为nil。但诸如Int,Double等类型则没有nil值。比如,32位Int,超过最大值后,OC 会用NSNotFound处理,而不是nil值。Swift 比OC 更为灵活,直接在语法层面支持所有类型佳能用nil值--可选值(Optional)

如何使用

使用可选值,Swift 提供了非常简洁的方式,直接在类型后加‘?’,例如定义一个有可选值的整型变量:

var optionalInteger: Int?

运行Xcode playground 后,可以看到如下效果:
在xcode playground 运行效果

解包(Unwrapped)

Swift 是强类型语言,所以,上述optionalInteger 在使用时,Swift 并不希望它是可选值,必须为Int,因此,就需要解包--简单地理解,就是转换。解包的的操作,也很简单,在变量后面加 ‘!’,比如:

var normalInteger = optionalInteger! + 5

值绑定(Binding)

解包的前提是你确定该变量一定不是nil,否则强制解包会不安全,Swfit 提供了另一个很简洁的语法来检查解包前比值是否为nil值--即值绑定,再次使用optionalInteger为例:

if let tempInteger = optionalInteger{
    normalInteger = tempInteger + 5     
}else {
    // nil ,do something
}

注意,tempInter 赋值后,其值不是可选的,而是Int,所以不需要解包。

本文,参考http://www.codingexplorer.com/swift-optionals-declaration-unwrapping-and-binding/

Swift::3::可选值