swift中为什么要创造出可选型?
(1)因為nil這個東西,swift中沒有就是沒有。? Int? 叫 整型可選型,如果不提前聲明,直接賦值變量 nil會報錯 。
可以將Int賦值給Int??? ,但是不能將Int?賦值給Int 。
(2)不能將 普通 String 和可選型直接一起混用,必須 Unwrap 。也就是這樣 在某個可選型變量后面加個!
表示擔保它一定不為nil? 。這個 叫 強制解包 , 是有風險的。
?(3)swift提供了一種語法用來解包 ,let 也可以用var
?if let errorCode = errorCode {
??? 僅在這里面可以使用解包后的errorCode ,此時不需要加!
??? 但是出了花括號 ,errorCode又是可選型了。這是因為swift是嚴格的類型語言。
}
if let 這里可以用逗號隔開,對多個可選型進行解包 ,這里還可以用where關鍵字判斷是否為某個值{
}
(4)隱式解析可選:
非Optional的變量必須在聲明時或者構造器中進行初始化,但是如果想在viewDidLoad中初始化,所以只能聲明Optional:var myLabel: UILabel? ,雖然我們確定在viewDidLoad 中初始化,并且在ViewController的生命周期內不會置為nil, 但是對myLabel操作時,每次依然要加上!來強制拆包
myLabel!.text = "text"
myLabel!.frame = CGRectMake(0,0,10,10)
對于這種類型的值,我們可以直接這么聲明 var myLabel: UILabel!,這種是特殊的Optional,稱為Implicitly?Unwrapped?Optionals,?直譯就是隱式拆包的Optional,就等于說你每次對這種類型的值操作時,都會自動在操作前補上一個!進行拆包
(5)Swift 的nil和 Objective-C 中的nil并不一樣。在 Objective-C 中,nil是一個指向不存在對象的指針。在 Swift 中,nil不是指針——它是一個確定的值,用來表示值缺失。任何類型的可選都可以被設置為nil,不只是對象類型。
轉載于:https://www.cnblogs.com/liuw-flexi/p/6866045.html
總結
以上是生活随笔為你收集整理的swift中为什么要创造出可选型?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何去除微信小程序 wxParse 解析
- 下一篇: Tool-杂项-建模:犀牛(3D造型软件