一骆捧、可選類型(Optional)
? ? ? ? 相對OC而言髓绽,Swift增加一種可選類型(Optional),可選類型的含義是表示一個值可能是有值的顺呕,也有可能沒有值(nil)。在OC中nil是個指針株茶,但是在Swift中,在可選類型情況下扫夜,nil僅僅表示可選類型沒有值。
二笤闯、拆包
? ? ? ? ?1棍厂、 什么是拆包?拆包其實就是一個可選類型有值的時候牺弹,打印結果帶有可選類型(Optional)標記时呀,當我們去掉可選類型(Optional)的過程就成為拆包晶默,例如:將Optional String類型強制轉換為String類型的過程谨娜,就是一種拆包過程磺陡。
? ? ?? ? 2、強制拆包:當我們在進行拆包過程中坞靶,如果對可選類型(Optional)是否有值不做處理,進行拆包的過程彰阴,其實就是一種強制拆包的過程拍冠,如果某一個可選類型(Optional)沒有值尿这,而我們又進行強制拆包的操作倦微,就會崩潰,報錯提示如下:
fatal error: unexpectedly found nil while unwrapping an Optional value
? ? ? 3、正確的拆包方式
? ? ? ? ? ?首先我們需要對可選類型(Optional)是否有值進行判斷焦履,如果可選類型(Optional)有值,可以進行拆包嘉裤,如果可選類型(Optional)沒有值,則不能進行拆包工作屑宠,一般使用 if - else語句來判斷。
三躺翻、封包
? ? ? ? ? 什么是封包卫玖?簡單來就是將一種確定的數(shù)據(jù)類型轉換為可選類型(Optional)的過程公你,我們稱之為封包假瞬。例如:將String類型轉換為Optional String類型的過程迂尝,其實就是一種封包過程。
? ? ? ? ? 封包一般分顯式封包和隱式封包垄开,如下圖: