以上程序执行结果为:
字符串为 nil
可选类型类似于Objective-C中指针的nil值,但是nil只对类(class)有用,而可选类型对所有的类型都可用,并且更安全。
强制解析
当你确定可选类型确实包含值之后,你可以在可选的名字后面加一个感叹号(!)来获取值。这个感叹号表示"我知道这个可选有值,请使用它。"这被称为可选值的强制解析(forced unwrapping)。
实例如下:
import Cocoavar myString:String?myString = "Hello, Swift!"if myString != nil {
print(myString)}else{
print("myString 值为 nil")}以上程序执行结果为:
Optional("Hello, Swift!")强制解析可选值,使用感叹号(!):
import Cocoavar myString:String?myString = "Hello, Swift!"if myString != nil {
// 强制解析
print( myString! )}else{
print("myString 值为 nil")}以上程序执行结果为:
Hello, Swift!
注意:
使用!来获取一个不存在的可选值会导致运行时错误。使用!来强制解析值之前,一定要确定可选包含一个非nil的值。
自动解析
你可以在声明可选变量时使用感叹号(!)替换问号(?)。这样可选变量在使用时就不需要再加一个感叹号(!)来获取值,它会自动解析。
实例如下:
import Cocoavar myString:String!myString = "Hello, Swift!"if myString != nil {
print(myString)}else{
print("myString 值为 nil")}以上程序执行结果为:
Hello, Swift!
可选绑定
使用可选绑定(optional binding)来判断可选类型是否包含值,如果包含就把值赋给一个临时常量或者变量。可选绑定可以用在if和while语句中来对可选类型的值进行判断并把值赋给一个常量或者变量。
像下面这样在if语句中写一个可选绑定:
if let constantName = someOptional {
statements}让我们来看下一个简单的可选绑定实例:
import Cocoavar myString:String?myString = "Hello, Swift!"if let yourString = myString {
print("你的字符串值为 - (yourString)")}else{
print("你的字符串没有值")}以上程序执行结果为:
你的字符串值为 - Hello, Swift!









