Swift基本語法之元組和可選類型

元組

元組的介紹

  • 元組是Swift中特有的,OC中并沒有相關類型
  • 它是什么呢?
    • 它是一種數據結構,在數學中應用廣泛
    • 類似于數組或者字典
    • 可以用于定義一組數據
    • 組成元組類型的數據可以稱為“元素”

元組的定義

  • 元組的常見寫法
// 使用元組描述一個人的信息
("1001", "張三", 30, 90)
// 給元素加上元素名稱,之后可以通過元素名稱訪問元素
(id:"1001", name:"張三", english_score:30, chinese_score:90)

元組的簡單使用

  • 用元組來描述一個HTTP的錯誤信息
// 元組:HTTP錯誤
// let array = [404, "Not Found"]
// 寫法一:
let error = (404, "Not Found")
print(error.0)
print(error.1)

// 寫法二:
let error = (errorCode : 404, errorInfo : "Not Found")
print(error.errorCode)
print(error.errorInfo)

// 寫法三:
let (errorCode, errorIno) = (404, "Not Found")
print(errorCode)
print(errorIno)

可選類型

可選類型的介紹

  • 注意:
    • 可選類型時swift中較理解的一個知識點
    • 暫時先了解,多利用Xcode的提示來使用
    • 隨著學習的深入,慢慢理解其中的原理和好處
  • 概念:
    • 在OC開發中,如果一個變量暫停不使用,可以賦值為0(基本屬性類型)或者賦值為空(對象類型)
    • 在swift開發中,nil也是一個特殊的類型.因為和真實的類型不匹配是不能賦值的(swift是強類型語言)
    • 但是開發中賦值nil,在所難免.因此推出了可選類型
  • 可選類型的取值:
    • 空值
    • 有值

定義可選類型

  • 定義一個可選類型有兩種寫法
    • 最基本的寫法
    • 語法糖(常用)
// 錯誤寫法
// let string : String = nil
// 正確寫法:
// 注意:name的類型是一個可選類型,但是該可選類型中可以存放字符串.
// 寫法一:定義可選類型
let name : Optional<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.520it.com")

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

// 通過url來創建request對象:在使用可選類型前要先進行判斷是否有值
// 該語法成為可選綁定(如果url有值就解包賦值給tempURL,并且執行{})
if let tempUrl = url {
    let request = NSURLRequest(URL: tempUrl)
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容