基礎知識一:基礎部分

1、數據類型

基礎數據類型:Int Double Float Bool(true,false) String

集合類型: Array Set Dictionary

swift新增類型: 元組(Tuple) 可選(Optional)類型

2、常量和變量

a.聲明常量和變量

let maximumNumberOfLoginAttempts = 10
var currentLoginAttempt = 0

b.多個常量、變量聲明

var x = 0.0, y = 0.0, z = 0.0

c.類型標注

當你聲明常量或者變量的時候可以加上類型標注(type annotation),說明常量或者變量中要存儲的值的類型

var message: String

多行聲明

var red, green, blue: Double

注意:一旦聲明了常量、變量的類型標注,那么更改其類型

3、輸出常量和變量

只輸出值 和 在字符串中打印相應的值。

print(friendlyWelcome)

Swift 用字符串插值(string interpolation)的方式把常量名或者變量名當做占位符加入到長字符串中,Swift 會用當前常量或變量的值替換這些占位符。將常量或變量名放入圓括號中,

print("The current value of friendlyWelcome is \(friendlyWelcome)")

4.類型安全和類型推斷

由于 Swift 是類型安全的,所以它會在編譯你的代碼時進行類型檢查(type checks),并把不匹配的類型標記為錯誤。

隱士顯示字符串類型:根據賦值使用‘類型推斷’明確類型

//meaningOfLife 會被推測為 Int 類型
let meaningOfLife = 42

5.類型別名

就是給現有類型定義另一個名字,使用關鍵字 typealias

typealias AudioSample = UInt16
var maxAmplitudeFound = AudioSample.min
// maxAmplitudeFound 現在是 0

6.元組

把多個值組合成一個復合值。元組內的值可以是任意類型,并不要求是相同類型。

6.1 聲明

let http404Error = (404, "Not Found")
// http404Error 的類型是 (Int, String),值是 (404, "Not Found")

6.2 分解,獲取元組元素

a.聲明元組變量,元組賦值給對應位置下的元組元素

let (statusCode, statusMessage) = http404Error
print("The status code is \(statusCode)")
// 輸出 "The status code is 404"

b.只需要部分元組元素,忽略的部分用下劃線(_)

let (justTheStatusCode, _) = http404Error
print("The status code is \(justTheStatusCode)")
// 輸出 "The status code is 404"

c.通過下標獲取單個元素,下標從零開始

print("The status code is \(http404Error.0)")
// 輸出 "The status code is 404"

6.3 另一種形式聲明和分解

let http200Status = (statusCode: 200, description: "OK")
print("The status code is \(http200Status.statusCode)")
// 輸出 "The status code is 200"

7.可選類型

7.1基本概念

?:可選,可以沒有值; !:獲取的值不能為nil

注意:
在 Objective-C 中,nil 是一個指向不存在對象的指針。
在 Swift 中,nil 不是指針——它是一個確定的值,用來表示值缺失。任何類型的可選狀態都可以被設置為 nil,不只是對象類型。

7.2 如果你聲明一個可選常量或者變量但是沒有賦值,它們會自動被設置為 nil

var surveyAnswer: String?
// surveyAnswer 被自動設置為 nil

7.3 數值型類型轉換

Swift 的 Int 類型有一種構造器,作用是將一個 String 值轉換成一個 Int 值,
它返回一個可選類型(optional)Int

let possibleNumber = "123"
let convertedNumber = Int(possibleNumber)
// convertedNumber 被推測為類型 "Int?", 或者類型 "optional Int"

7.4 if 語句以及強制解析

當你確定可選類型確實包含值之后,使用 ‘可選值的強制解析’,即可選名后面添加!來獲取常量或變量的值

若使用 ! 來獲取一個不存在的可選值會導致運行時錯誤。所以,在使用前需要用if判斷值是否有值

let convertedNumber? = "123"
if let convertedNumber = Int(convertedNumber) {
    print("convertedNumber has an integer value of \(convertedNumber!).")
}
// 輸出 "convertedNumber has an integer value of 123."

 let convertedNumber = Int(convertedNumber) else { 
    return 
    }
注意:
在 if 條件語句中使用常量和變量來創建一個可選綁定,僅在 if 語句的
句中(body)中才能獲取到值。
相反,在 guard 語句中使用常量和變量來創建一個
可選綁定,僅在 guard 語句外且在語句后才能獲取到值,請參考提前退出。

7.5 隱式解析可選類型

可選類型一直存在時,將 “類型標注?” 改為 “類型標注!”
獲取值的時候,不需要寫“!”

let possibleString: String? = "An optional string."
let forcedString: String = possibleString! // 需要感嘆號來獲取值

let assumedString: String! = "An implicitly unwrapped optional string."
let implicitString: String = assumedString  // 不需要感嘆號

參考文獻:
極客學院 - swift:基礎部分

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

推薦閱讀更多精彩內容