可選連的概念
-
它的可選性體現于請求或調用的目標當前可能為空(nil)
- 如果可選的目標有值,那么調用就會成功;
- 如果選擇的目標為空(nil),則這種調用將返回空(nil)
多次調用被鏈接在一起形成一個鏈,如果任何一個節點為空(nil)將導致整個鏈失效。
-
可選鏈的使用
- 在可選類型后面放一個問號,可以定義一個可選鏈。
- 這一點很像在可選值后面放一個嘆號來強制拆得其封包內的值
- 它們的主要的區別在于當可選值為空時可選鏈即刻失敗
- 然而一般的強制解析將會引發運行時錯誤。
- 因為可選鏈的結果可能為nil,可能有值.因此它的返回值是一個可選類型.
- 可以通過判斷返回是否有值來判斷是否調用成功
- 有值,說明調用成功
- 為nil,說明調用失敗
可選鏈的示例
- 從可選鏈中取值
- 示例描述: 人(Person)有一個狗(Dog),狗(Dog)有一個玩具(Toy),玩具有價格(price)
- 使用代碼描述上述信息
// 1.定義類
class Person {
var name : String
var dog : Dog?
init(name : String) {
self.name = name
}
}
class Dog {
var color : UIColor
var toy : Toy?
init(color : UIColor) {
self.color = color
}
func runing() {
print("跑起來")
}
}
class Toy {
var price : Double = 0.0
}
// 2.創建對象,并且設置對象之間的關系
// 2.1.創建對象
let person = Person(name: "小明")
let dog = Dog(color: UIColor.yellowColor())
let toy = Toy()
toy.price = 100.0
// 2.2.設置對象之間的關系
person.dog = dog
dog.toy = toy
- 需求:獲取小明的大黃寵物的玩具價格
- 取出的值為可選類型,因為可選鏈中有一個可選類型為nil,則返回nil
- 因此結果可能有值,可能為nil.因此是一個可選類型
let price = person.dog?.toy?.price
print(price) // Optional(100.0)\n
- 需求:給小明的大黃一個新的玩具
- 相當于給可選類型賦值
person.dog?.toy = Toy()
- 需求:讓小明的狗跑起來
- 如果可選類型有值,則會執行該方法
- 如果可選類型為nil,則該方法不會執行
person.dog?.runing()
- 系列文章
01 Swift最基本的語法變化
02 Swift中的變量和常量
03 Swift中的數據類型
04 Swift邏輯分支
05 Swift中的循環
06 Switf中的字符串
07 Swift 數組
08 Swift字典
09 Swift 元組
10 Swift 可選類型
11 Swift 類型轉化
12 Swift 函數
13 Swift 枚舉類型
14 Swift 結構體
15 Swift 類的定義
16 Swift 類的構造函數
17 Swift 類的析構函數
18 自動引用計數
19 Swift 可選鏈
20 協議
21 閉包
22 Swift 懶加載
23 Swift 注釋