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:基礎部分