接上篇,
1、隱式解析可選類型
目的:有些時候在程序架構(gòu)中,第一次被賦值之后,可以確定一個可選類型總會有值,在這種情況下。每次都要判斷和解析可選值是非常低效的,因為可以確定它總會有值。
折中類型的可選狀態(tài)被定義為隱式解析可選類型。把想要用作可選的類型的后面的問號(String?)改成感嘆號(String?。﹣砺暶饕粋€隱式解析可選類型
let forcedString: String = possibleString!
print(forcedString)
let assumedString: String! = "An implicitly unwarpped optional string"
let implicitString: String = assumedString
print(implicitString)```
注:可以把隱式解析可選類型當(dāng)作一個可以自動解析的可選類型,你要做的是只是聲明的時候把感嘆號放到類型的結(jié)尾,而不是每次取值的可選名字的結(jié)尾
2、斷言:
可選類型可以讓你判斷值是否存在,你可以在代碼中優(yōu)雅地處理值缺失的情況,然而,在某些情況下,如果值缺失或者并不滿足特定條件,你的代碼可能沒辦法繼續(xù)執(zhí)行。這時你可以在你的代碼中觸發(fā)一個斷言來結(jié)束代碼運行并通過調(diào)試來找到值缺失的原因。
3、空合運算符
a??b:將對可選類型a進(jìn)行空判斷,如果a包含一個值就進(jìn)行解封,否則就返回一個默認(rèn)值b,等同于以下三目元運算符 a?。絥il?a!:b
4、區(qū)間運算符
a...b表示從a到b包含ab常用在循環(huán)中
5、集合類型:
Arrays、Sets、Dictionaries:其中Arrays是有序的數(shù)據(jù)集、集合(Sets)是無序無重復(fù)數(shù)據(jù)的集、字典(Dictionaries)是無序的鍵值對的集。
在Swift語言中,這幾個數(shù)據(jù)類型存儲的數(shù)據(jù)值類型必須明確。這就意味著我們不能把不正確的數(shù)據(jù)類型插入其中。同時這也說明我們完全可以對取回值的類型非常自信
集合Sets,用來存儲相同類型并且沒有確定順序的值。當(dāng)集合元素順序不重要時或者希望確保每個元素只出現(xiàn)一次時可以使用集合而不是數(shù)組
6、控制流
if repeat while while Swith case 標(biāo)簽 、guard(提前退出)
7、檢測API的可用性
if #available(platform name version,...,*){
API可用,語句將執(zhí)行
}else{
API不可用,語句將不執(zhí)行
}