Swift开发 解包(!的用法)

解包(!) : 可选类型每次在访问的(访问其属性、方法、值等)时候,都会检查他的值是否存在,但有时候根据程序结构就可以推断可选量在首次赋值的时候必然存在,这时候,就不需要每次验证值是否存在。
如果确定一个可选量的值一定存在,那么我们使用 “!”进行解包获取他的值或者使用Optional Binding(选择绑定)

一、可选类型回顾

定义个可选的字符串常量
let StringValue:String? = “a optional string “

let value = StringValue.hashValue //这个是错误的,StringValue是可选类型,在对可选类型访问(属性、方法等)的时候要对其判断值是否存在(或者说标记其是可选类型)

let value = StringValue?.hashValue //这个是正确的
但是这个只是判断了(标记了)可选类型是否能响应hashValue这个方法,类似于OC里面判断代理是否能响应这个方法self.delegate responseSelectorto Sector,而并没有执行这个方法。
也就是说, StringValue?.hashValue 只是外面的判断而已,并没有实际取到可选类型的值。

二、使用解包获取一个可选类型的初始值
1. “!”
Swift开发 解包(!的用法)_第1张图片

这里要注意的是: hashValue 并不是说是possibleString并不是value值。可以理解成属性或者方法吧。从打印结果可以知道,使用解包!获得的是可选类型的确定值,而直接访问可选类型,获得的是可选值。
2. Optional Binding(选择绑定) 相当于possibleString!
Swift开发 解包(!的用法)_第2张图片

你可能感兴趣的:(swift,解包,选择绑定,获取可选类型的值)