可選鏈式調用(Optional Chaining)wikihtml
可選鏈式調用:是一種能夠在當前值可能爲nil的可選值請求和調用屬性、方法或者下標。與Objective-C中向nil發送消息有些相像,可是swift可選鏈式調用能夠做用於任何類型,而且能檢查調用是否成功。swift
1 使用可選鏈式調用代替強制展開spa
經過在想調用的屬性、方法或下標的可選值(optional value)後面跟一個?,能夠定義一個可選鏈,與!相似,不一樣之處在於!可能會出發運行時錯誤。htm
class Person {ip
var name: String?get
}io
let person = Person()class
print(person.name?.characters.count) // nil請求
print(person.name!.characters.count) // 運行時錯誤方法
2 爲可選鏈式調用定義模型類型
經過使用可選鏈式調用能夠調用多層屬性、方法和下標。這樣能夠在複雜的模型中向下訪問各類子屬性,而且判斷可否訪問子屬性的屬性、方法或下標。
3 經過可選鏈式調用訪問屬性
4 經過可選鏈式調用調用方法
5 經過可選鏈式訪問下標
以下例子 ,存在一個Student類和一個Teacher類
class Student {
var name: String?
func read() {
print("read book")
}
}
class Teacher {
var students: [Student]?
var numberOfStudent: Int? {
get {
return students?.count
}
}
subscript (i: Int) -> Student? {
return self.students?[i]
}
}
let teacher = Teacher()
// 訪問屬性
print("number Of Student: \(teacher.numberOfStudent)")
// 訪問方法
teacher.students?[0].read()
// 訪問下標
print("first Student: \(teacher[0])")