Swift - 可選類型

可選類型

可選類型的介紹

  • 注意:

    • 可選類型是swift中比較難理解的一個知識點
    • 可以多利用Xcode的提示來使用
  • 概念:

    • 在OC開發中,如果一個變量暫時不使用,我們通常會先賦值為0(基本數據類型)或者賦值為空(對象類型)
    • 在swift開發中,nil是一個特殊的類型,因為和實際真實的類型不匹配是不能賦值的(swift是強類型語言)
    • 但是由于在開發中賦值為nil是在所難免的,因此推出了可選類型
  • 可選類型的取值:

    • 空值
    • 有值

定義可選類型

  • 定義一個可選類型有兩種寫法
    • 最基本的寫法
    • 語法糖(常用)
// 錯誤寫法
let string : string = nil

// 正確寫法
// 注意:name的類型是一個可選類型
// 寫法一:定義可選類型
let name : Optianal<String> = nil

// 寫法二:定義可選類型,語法糖(常用)
let name : String? = nil

可選類型的使用


// 演練一:給可選類型賦值
// 定義可選類型
var string : Optional<String> = nil

// 給可選類型賦值
// 錯誤寫法:因此該可選類型中只能存放字符串
string = 123
// 正確寫法:
string = "Hello World"

// 打印結果
print(string)
// 結果:Optional("Hello World"\n)
// 因為打印出來的是可選類型,所以會帶Optional


// 演練二:取出可選類型的值
// 取出可選類型的真實值(解包)
print(string!)
// 結果:Hello World\n


// 注意:如果可選類型為nil,強制取出其中的值(解包),會出錯
string = nil
print(string!) // 報錯


// 正確寫法:
if string != nil {
    print(string!)
}


// 簡單寫法:為了讓在if語句中可以方便使用string
// 可選綁定
if let str = string {
    print(str)
}

真實應用場景

  • 目的:讓代碼更加嚴謹

// 通過該方法創建的URL,可能有值,也可能沒有值
// 錯誤方法:如果返回值是nil時,就不能接受了
// 如果字符串中有中文,則返回值為nil,因此該方法的返回值就是一個可選類型,而使用一個NSURL類型接收是錯誤的
let url : NSURL = NSURL(string: "www.baidu.com")

// 正確寫法:使用可選類型來接收
let url : NSURL? = NSURL(string: "www.baidu.com")
// 該方式利用類型推導
let url = = NSURL(string: "www.baidu.com")

// 通過url來創建request對象:在使用可選類型前要先進行判斷是否有值
// 該語法成為可選綁定(如果url有值就解包賦值給tempURL,并且執行{})
if let tempUrl = url {
    let request = NSURLRequest(URL: tempUrl)
    }

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 可選類型的介紹 建議:可選類型時swift中較難理解的一個知識點暫時先了解,多利用Xcode的提示來使用隨著學習的...
    猴子的救兵520閱讀 344評論 0 0
  • 在值可能不存在的情況下,您可以使用可選值。 可選表示兩種可能性:有一個值,您可以解開可選值以訪問該值,或者根本沒有...
    Joker_King閱讀 403評論 0 0
  • Swift 介紹 簡介 Swift 語言由蘋果公司在 2014 年推出,用來撰寫 OS X 和 iOS 應用程序 ...
    大L君閱讀 3,271評論 3 25
  • @(〓〓 iOS-Swift語法)[Swift 語法] 作者: Liwx 郵箱: 1032282633@qq.c...
    Liwx閱讀 1,313評論 0 1
  • 若一葉翻飛 秋不相隨 是否有煙雨沉醉 我的渡口長滿蘆葦 鴻雁只帶來一絲涼意 念誰 暮色中蘆花堆砌 燭光里笑語徘徊 ...
    上善若水_cd86閱讀 402評論 8 11