swift学习

可选绑定

使用可选绑定(optional binding)来判断可选是否包含值,如果包含就把值赋给一个临时

常量或者变量。可选绑定可以用在if和while语句中来对可选的值进行判断并把值赋给一

个常量或者变量。

nil

你可以给可选变量赋值为nil来表示它没有值:

var serverResponseCode: Int? = 404

// serverResponseCode 包含一个可选的 Int 值 404

serverResponseCode = nil

// serverResponseCode 现在不包含值

注意:nil不能用于非可选的常量和变量。如果你的代码中有常量或者变量需要处理值缺失

的情况,请把它们声明成对应的可选类型。

如果你声明一个可选常量或者变量但是没有赋值,它们会自动被设置为nil:

var surveyAnswer: String?

// surveyAnswer 被自动设置为 nil

注意:Swift的nil和Objective-C中的nil并不一样。在Objective-C中,nil是一个指向

不存在对象的指针。在Swift中,nil不是指针——它是一个确定的值,用来表示值缺失。

任何类型的可选都可以被设置为nil,不只是对象类型。

隐式解析可选

如上所述,可选暗示了常量或者变量可以“没有值”。可选可以通过if语句来判断是否有

值,如果有值的话可以通过可选绑定来解析值。

有时候在程序架构中,第一次被赋值之后,可以确定一个可选总会有值。在这种情况下,

每次都要判断和解析可选值是非常低效的,因为可以确定它总会有值。

这种类型的可选被定义为隐式解析可选(implicitly unwrapped optionals)。把想要用作可

选的类型的后面的问号(String?)改成感叹号(String!)来声明一个隐式解析可选。

当可选被第一次赋值之后就可以确定之后一直有值的时候,隐式解析可选非常有用。隐式

解析可选主要被用在Swift中类的构造过程中,请参考类实例之间的循环强引用。

一个隐式解析可选其实就是一个普通的可选,但是可以被当做非可选来使用,并不需要每

次都使用解析来获取可选值。

你可能感兴趣的:(swift学习)