5 swift開發iOS 可選型別

2021-07-28 01:38:42 字數 2153 閱讀 3740

swift 可選(optionals)型別

swift 的可選(optional)型別,用於處理值缺失的情況。可選表示"那兒有乙個值,並且它等於 x "或者"那兒沒有值"。

swfit語言定義字尾?作為命名型別optional的簡寫,換句話說,以下兩種宣告是相等的:

var optionalinteger: int?

var optionalinteger: optional

在這兩種情況下,變數optionalinteger都是可選整數型別。注意,在型別和?之間沒有空格。

optional 是乙個含有兩種情況的列舉,none和some(t),用來表示可能有或可能沒有值。任何型別都可以明確宣告為(或者隱式轉換)可選型別。當宣告乙個可選型別的時候,要確保用括號給?操作符乙個合適的範圍。例如,宣告可選整數陣列,應該寫成(int)?;寫成int?會報錯。

當你宣告乙個可選變數或者可選屬性的時候沒有提供初始值,它的值會預設為nil。

可選項遵照logicvalue協議,因此可以出現在布林環境中。在這種情況下,如果可選型別t?包含型別為t的任何值(也就是說它的值是optional.some(t)),這個可選型別等於true,反之為false。

如果乙個可選型別的例項包含乙個值,你可以用字尾操作符 !來訪問這個值,如下所示:

optionalinteger = 42

optionalinteger! // 42

使用操作符!去獲取值為nil的可選變數會有執行時錯誤。

你可以用可選鏈結和可選繫結選擇性執行可選表示式上的操作。如果值為nil,任何操作都不會執行,也不會有執行報錯。

讓我們來詳細看下以下例項來了解 swift 中可選型別的應用:

import cocoa

var mystring:string? = nil

if mystring != nil else

以上程式執行結果為:

字串為 nil

可選型別類似於objective-c中指標的nil值,但是nil只對類(class)有用,而可選型別對所有的型別都可用,並且更安全。

強制解析

例項如下:

import cocoa

var mystring:string?

mystring = "hello, swift!"

if mystring != nil else

以上程式執行結果為:

optional("hello, swift!")

強制解析可選值,使用感嘆號(!):

import cocoa

var mystring:string?

mystring = "hello, swift!"

if mystring != nil else

以上程式執行結果為:

hello, swift!

注意:使用!來獲取乙個不存在的可選值會導致執行時錯誤。使用!來強制解析值之前,一定要確定可選包含乙個非nil的值。

自動解析

你可以在宣告可選變數時使用感嘆號(!)替換問號(?)。這樣可選變數在使用時就不需要再加乙個感嘆號(!)來獲取值,它會自動解析。

例項如下:

import cocoa

var mystring:string!

mystring = "hello, swift!"

if mystring != nil else

以上程式執行結果為:

hello, swift!

可選繫結

使用可選繫結(optional binding)來判斷可選型別是否包含值,如果包含就把值賦給乙個臨時常量或者變數。可選繫結可以用在if和while語句中來對可選型別的值進行判斷並把值賦給乙個常量或者變數。

像下面這樣在if語句中寫乙個可選繫結:

if let constantname = someoptional

import cocoa

var mystring:string?

mystring = "hello, swift!"

if let yourstring = mystring else

以上程式執行結果為:

你的字串值為 - hello, swift!

Swift 5 可選型別 Optionals

var name string?jack var age int?age 10var age1 int?age1 age1 10age1 確定可選性不為空的時候才可以強制解包if let num int 123 num 0else a b a 是可選項 b 是可選或者不是可選 a和b的儲存型別必須相...

Swift 可選型別

swift 可選型別 optionals 可選型別 強制解析 自動解析 可選繫結 1.可選型別 加入我們建立乙個變數,但是它有可能為空,這時候swift提供乙個符號 來表示這是乙個可能為空的變數 var thisstr string?看到這裡的if,沒錯,if或者for迴圈後面的內容不加 加了也沒錯...

Swift 可選型別

在 swift 中,可選型別用來處理值可能缺失的情況,表示下面兩種情況 在 swift 中宣告變數時,使用?或 來表示宣告的變數是可選型別。let name string?var age int 此時,變數name和age預設都是nil,表示空。而?和 的區別在於使用前者宣告的變數所包含的值時,需要...