Swift中Optional值的鏈?zhǔn)秸{(diào)用學(xué)習(xí)筆記
Swift中的Optional值有這樣的特性,當(dāng)對其進(jìn)行可選拆包時(shí),即使用?進(jìn)行Optional類型值的取值時(shí),如果Optional值不為nil,則會返回原始類型的數(shù)據(jù)值,如果為nil,則會返回nil。因此,當(dāng)使用?對Optional拆包后進(jìn)行方法、屬性或者下標(biāo)的調(diào)用時(shí),如果有值,則會成功相應(yīng)調(diào)用,如果沒有值,則會調(diào)用失敗,返回nil。
注意:使用!則會進(jìn)行強(qiáng)制拆包,這時(shí)如果Optional值為nil,則會出現(xiàn)運(yùn)行時(shí)錯誤,因此開發(fā)者在使用!進(jìn)行強(qiáng)制拆包時(shí),必須確認(rèn)Optional類型值不為nil。
當(dāng)對可選值進(jìn)行可選拆包并調(diào)用其屬性或方法后,無論原屬性或者方法返回值是什么類型的,都會被包裝成Optional值類型。當(dāng)使用?對一個Optional值進(jìn)行拆包并調(diào)用其方法時(shí),方法的返回值一會被包裝為Optional類型,示例如下:
class Myclass { var cls:MyClassTwo? } class MyClassTwo { func run() -> String { return "run" } } let obj:Myclass = Myclass() //將返回nil obj.cls?.run()
在進(jìn)行Optional鏈調(diào)用的時(shí)候,會遵守如下一些特性:
1.如果進(jìn)行?拆包Optional值的屬性或者方法返回值原來為非Optional值,則會包裝成Optional值。
2.如果進(jìn)行?拆包Optional值的屬性或者方法返回值原來為Optional值,則依然會返回Optional值,并且并不會進(jìn)行Optional值類型的嵌套。
3.由于使用Optional值?可選拆包時(shí)會將其屬性和方法的返回值都包裝成Optional類型的,因此使用?可以進(jìn)行Optional鏈?zhǔn)秸{(diào)用,這其間,有一個環(huán)節(jié)調(diào)用失敗,整個鏈都會返回nil。
示例如下:
let obj:Myclass = Myclass() //將返回nil (obj.cls?.run())?.startIndex
相關(guān)文章
iOS Swift讀取本地json文件報(bào)錯的解決方法
只要是app開發(fā)者都知道,從服務(wù)器端獲得的數(shù)據(jù)要不就是json格式的數(shù)據(jù),要么就是xml格式的數(shù)據(jù),而這篇文章主要給大家介紹了關(guān)于iOS Swift讀取本地json文件報(bào)錯的解決方法,需要的朋友可以參考借鑒,下面來一起學(xué)習(xí)學(xué)習(xí)吧。2017-11-11Swift利用CoreData實(shí)現(xiàn)一個上班簽到的小工具
這篇文章主要給大家介紹了關(guān)于Swift利用CoreData實(shí)現(xiàn)一個上班簽到小工具的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-12-12Swift使用enum抹平數(shù)組元素差異實(shí)例詳解
這篇文章主要為大家介紹了Swift使用enum抹平數(shù)組元素差異實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11swift 3.0 正則表達(dá)式查找/替換字符的實(shí)現(xiàn)代碼
正則表達(dá)式使用單個字符串來描述、匹配一系列符合某個句法規(guī)則的字符串。本文重點(diǎn)給大家介紹swift 3.0 正則表達(dá)式查找/替換字符的實(shí)現(xiàn)代碼,需要的朋友參考下吧2017-08-08