1. 和別的語(yǔ)言不同,系統(tǒng)不會(huì)自動(dòng)給變量設(shè)置初始值马绝,也就是說變量不會(huì)有默認(rèn)值。所以在使用變量之前需要進(jìn)行初始化束凑,否則就會(huì)出錯(cuò)晒旅。
2. 利用泛型定義一個(gè)Optional類型的變量,從右側(cè)可以看出汪诉,它是空值废恋,沒有初始值。Optional其實(shí)是個(gè)枚舉扒寄,里面有None和Some兩種類型鱼鼓,用來包裝原始值。
3. 定義一個(gè)可選類型的字符串變量旗们,從右側(cè)的結(jié)果可以看出蚓哩,它的值也是空值。
5. 由于該變量的值為空岸梨,所以出現(xiàn)錯(cuò)誤提示,需要對(duì)變量進(jìn)行初始化操作稠氮。接著對(duì)這兩行代碼進(jìn)行修改曹阔。
6. 兩行代碼各增加了一個(gè)問號(hào)。前一個(gè)問號(hào)的作用是聲明一個(gè)Optional變量隔披,后一個(gè)問號(hào)的作用是赃份,在對(duì)Optional值操作時(shí),判斷是否可以響應(yīng)后面的操作奢米。
7. 因?yàn)樽兞康闹禐榭兆ズ詿o法執(zhí)行第14行代碼中的第一個(gè)問號(hào)后面的代碼。此時(shí)雙問號(hào)就發(fā)揮了作用鬓长,當(dāng)前面的代碼無法執(zhí)行時(shí)谒拴,就采用雙問號(hào)后面的值。
8. 將第17行中的第一個(gè)問號(hào)涉波,修改為感嘆號(hào)英上,此時(shí)也出現(xiàn)了錯(cuò)誤提示,這是因?yàn)楦袊@號(hào)會(huì)對(duì)左側(cè)的Optional值進(jìn)行拆包(從枚舉里面取出來原始值)啤覆。
11. 此時(shí)再使用感嘆號(hào)窗声,對(duì)被Optional包裹的變量進(jìn)行拆包相恃,現(xiàn)在已經(jīng)可以在右側(cè)正常顯示它的值了,并且沒有被Optional包裹嫌佑。
12. 如果將感嘆號(hào)更改為問號(hào)豆茫,也可以正常獲取它的值侨歉,但是因?yàn)闆]有拆包的原因,所以它的值會(huì)被Optional包裹揩魂。
13. 如果一定要使用問號(hào)幽邓,也可以給它補(bǔ)充一個(gè)默認(rèn)值,點(diǎn)擊此處的修復(fù)按鈕火脉,添加一個(gè)默認(rèn)值牵舵。
14. 此時(shí)會(huì)出現(xiàn)一對(duì)問號(hào),然后在問號(hào)的后方輸入當(dāng)變量的值為空時(shí)倦挂,選用該默認(rèn)值畸颅。
15. 此時(shí)右側(cè)可以正常顯示結(jié)果了。
16. 傳統(tǒng)的空值判斷方援,通常要使用if語(yǔ)句没炒,代碼量比較大,而使用問號(hào)和感嘆號(hào)犯戏,則可以很簡(jiǎn)潔的進(jìn)行空值的判斷送火。下面就是一個(gè)空值判斷的示例。
17. 此時(shí)已經(jīng)定義了兩個(gè)類先匪,并給兩個(gè)類都添加一個(gè)Optional屬性种吸。
18. 繼續(xù)給第二個(gè)類添加一個(gè)寵物類Optional屬性。
19. 初始化第二個(gè)類的實(shí)例對(duì)象呀非。
20. 打印該對(duì)象的寵物屬性坚俗,因?yàn)樵搶傩詻]有初始值,所以在本行代碼的右側(cè)實(shí)時(shí)反饋區(qū)岸裙,顯示它的值為空猖败。
21. 如果需要訪問寵物屬性的名稱屬性,則在寵物屬性之后添加一個(gè)問號(hào)降允,然后再訪問名稱屬性辙浑,這樣當(dāng)寵物屬性的值為空時(shí),直接返回空值拟糕,不再嘗試獲取名稱屬性。
22. 這樣使用一行代碼倦踢,就完成了通常需要使用多行if語(yǔ)句進(jìn)行空值判斷的功能送滞。接著對(duì)寵物屬性進(jìn)行初始化。
23. 打印該對(duì)象的寵物屬性辱挥,因?yàn)樵搶傩砸呀?jīng)擁有初始值犁嗅,所以在本行代碼的右側(cè)實(shí)時(shí)反饋區(qū),顯示了它當(dāng)前的值晤碘。
24. 接著使用相同的方式褂微,獲取寵物的名稱屬性功蜓,因?yàn)槊Q屬性沒有初始值,所以右側(cè)顯示的結(jié)果為空宠蚂。
26. 最后再嘗試獲取寵物的名稱屬性時(shí),右側(cè)的實(shí)時(shí)反饋區(qū)已經(jīng)能夠正常顯示名稱屬性的值了求厕。
本文整理自:《Swift4互動(dòng)教程》著隆,真正的[手把手]教學(xué)模式,用最快的速度上手iOS開發(fā)和Swift語(yǔ)言呀癣,蘋果商店App Store免費(fèi)下載:https://itunes.apple.com/cn/app/id1320746678美浦,或掃描本頁(yè)底部的二維碼。課程配套素材下載地址:資料下載