Swift 和?的使用

2021-07-10 19:26:05 字數 2027 閱讀 5201

swift語言使用var定義變數,但是和別的語言不同,swift不會自動給變數賦初始值,也就是申明的變數不會有預設值,所以要求在使用之前不要對其初始化。如果在變數使用之前木有初始化就會報錯:

var mystring : string

print(mystring)

program ended with

exit code: 9

swift的可選(optionals)型別,用語處理值缺失的情況。意思是:「那兒有乙個值」或者「那兒沒有值」,使用可選型別可以解決上面的問題。

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

var mystring : string?

var mystring : optional

optional 是乙個含有兩種情況的列舉,none和some(t),用來表示可能有或可能沒有值。任何型別都可以明確宣告為(或者隱式轉換)可選型別。

如果使用了可選型別,使用變數時如果沒有賦值,該變數會自動賦值成nil,

var mystring : string?

print(mystring)

結果:

nil

program ended with

exit code: 0

看出差別了吧:如果不使用『?』,我們訪問未初始化的變數時,程式直接報錯,如果使用了『?』,我們訪問未初始化的變數時,變數為空。

當你確定可選型別確實包含值之後,你可以在可選的名字後面加乙個感嘆號(!)來獲取值。這個感嘆號表示」我知道這個可選有值,請使用它。」這被稱為可選值的強制解析。如下所示:

var mystring : string?

mystring = "hello, swift!"

print(mystring!)

結果

hello, swift!

program ended with

exit code: 0

但是如果沒有給mystring賦值,使用!來訪問這個值,就會報錯

var mystring : string?

print(mystring!)

結果

fatal error: unexpectedly found nil
如果不使用!訪問變數他的結果如下:

var mystring : string?

mystring = "hello, swift!"

print(mystring)

結果:

optional("hello, swift!")

program ended with

exit code: 0

看出差別了吧。

如果在申明可選變數時使用(!)代替(?),這樣可選變數在使用時就不需要加乙個(!)來獲取值了,它會自動解析:

var mystring : string!

mystring = "hello, swift!"

print(mystring)

hello, swift!

program ended with

exit code: 0

同樣自動解析也不會自動賦初始值,所以在使用之前一定要先賦值,不然也會報錯。

1、宣告時新增(?),告訴編譯器這個是optional的,如果申明是沒有手動初始化,就會自動初始化為nil。

2、在對變數值操作前新增(?),如果判斷出變數為空,則不響應後面方法。 當我們希望程式執行時遇到某個變數為空時程式還可以正常執行我們就應該在申明變數時新增(?)。

3、申明是新增(!),告訴編譯器這個是optional的,以後對該變數操作的時候,都隱士的在操作前新增!

4、在對變數操作前新增!,表示該變數不會為nil,直接解包進行處理。

swift中tableview的使用和注意事項

今天使用swift寫了個簡單的tableview,語法和用法上跟oc沒多大的區別。但是還是有一些細節的地方需要注意一下的。先上 import uikit class viewcontroller uiviewcontroller,uitableviewdelegate,uitableviewdata...

Swift函式的使用

函式 1.定義函式 func 函式名 傳入的值 string string 2.函式的呼叫 let 傳入值 hallow xiaozhou println 函式呼叫的結果為 函式名 傳入值 函式呼叫的結果為 hallow xiaozhou 3.函式的形式引數和它的返回值 多參和無參 1 多參 fun...

Swift字典的使用

swift語言中的字典和陣列是一樣的,都要求所儲存的資料型別一致,他們是型別安全的,在使用的時候,能夠明確其中儲存的資料型別。一 字典的宣告和初始化 var dic1 1 1,2 2,3 3 var dic2 dictionary var dic3 dictionary var dic4 strin...