作為iOS開發(fā)者,只會OC肯定是不夠的,Swift作為蘋果強推的一門語言,一定要掌握。這篇博客整理了一些Swift語法基礎(chǔ)中的要點(本文書寫時的Swift版本為3.1)
</br>
一、標(biāo)識符的定義:
定義變量的格式:
var num : Int = 10
定義常量的格式:
let num : Int = 10
(通常把標(biāo)識符定義為常量,如果確定需要修改時再修改為變量,保證數(shù)據(jù)安全)
</br>
二、類型推導(dǎo)
當(dāng)一個標(biāo)識符在定義時有直接賦值,那么可以省略類型。編譯器會自動推導(dǎo)其類型
</br>
三、類型轉(zhuǎn)換
- 隱式轉(zhuǎn)換
Swift中沒有隱式轉(zhuǎn)換 - 強制轉(zhuǎn)換
- 在OC中,通過在變量之前用小括號括起類型的方式進行強制轉(zhuǎn)換
- 在Swift中,通過在標(biāo)識符之前寫上類型,用小括號括住標(biāo)識符的方式轉(zhuǎn)換:
let a = 10.0
let b : Int = Int(a)
</br>
四、邏輯分支
- if語句
- 條件語句的括號可以省略
- 沒有非零即真的規(guī)則,必須是Bool類型
- 三目運算
- 語句格式與OC中完全一致
- guard
- 守衛(wèi)。根據(jù)判斷條件篩選,提高代碼可讀性
- switch
- 不用寫break,如果希望穿透,則加上
fallthrough
- 可以判斷多個條件,在case后用逗號分隔
- 可以判斷浮點型和字符串
-
可以判斷區(qū)間:左閉右開區(qū)間
min..<max
,表示[min,max);左閉右閉區(qū)間min...max
,表示[min,max]
</br>
五、循環(huán)
- for循環(huán)
- while循環(huán)
- repeat while循環(huán)
</br>
六、字符串
Swift中的字符串是一個結(jié)構(gòu)體,而不再是一個對象。效率更高
- 遍歷字符串:
for char in str.characters {
print(char)
}
- 拼接字符串
(1)字符串與字符串拼接。
直接使用+運算即可
(2)快速拼接。
在字符串中通過(param)的方式拼接參數(shù):
let age = 18
let name = "xyz"
let height = 1.88
let info = "my name is \(name), my age is \(age), my height is \(height)"
打印結(jié)果my name is xyz, my age is 18, my height is 1.88
(3)格式化拼接。
以拼接時間為例
let min = 2
let sec = 7
let timeString = String(format : "%02d:%02d", arguments:[min, sec])
打印結(jié)果02:07
3.截取字符串
一般是先把String類型轉(zhuǎn)換為NSString類型,再調(diào)用NSString的方法進行截取
let urlString = "www.baidu.com"
let header = (urlString as NSString).substring(to: 3)
//結(jié)果為"www"
let middle = (urlString as NSString).substring(with: NSMakeRange(4, 5))
//結(jié)果為"baidu"
let subfix = (urlString as NSString).substring(from: 10)
//結(jié)果為"com"
4.判斷字符串是否為空
- 與空字符串進行比較
if str == "" {
//do something
}
- 判斷count是否為0
if str.characters.count == 0 {
//do something
}
- 判斷isEmpty屬性是否為true
if str.isEmpty {
//do something
}
</br>
七、數(shù)組
- 定義數(shù)組
- 定義不可變數(shù)組:使用let修飾符定義
let array = ["Baidu","Alibaba","Tencent"]
- 定義可變數(shù)組:使用var修飾符定義
var mutableArray = [String]()
- 操作可變數(shù)組
- 增
mutableArray.append("163")
mutableArray.append("HuaWei")
- 查
mutableArray[0]
- 改
mutableArray[0] = "HuaWei"
- 刪
mutableArray.remove(at: 0)
- 遍歷數(shù)組
- 根據(jù)下標(biāo)遍歷
for i in 0..<array.count {
print(array[i])
}
- 快速遍歷數(shù)組中的元素
for name in array {
print(name)
}
- 遍歷數(shù)組的指定區(qū)間
for name in array[a..<b] {
print(name)
}
- 合并數(shù)組
相同類型的數(shù)組可以通過加法運算符直接合并
let resultArray = array1 + array2
</br>
八、字典
- 定義字典
- 定義不可變字典:使用let修飾符定義
let dict : [String : Any] = ["name" : "xyz" , "age" : 36, "height" : 1.86]
- 定義可變字典:使用var修飾符定義
var dictM = [String : Any]()
- 對可變字典的操作
- 增
dictM["name"] = "xyz"
dictM["age"] = 36
dictM["height"] = 1.86
- 查
dictM["name"]
- 改
dictM["height"] = 1.58
- 刪
dictM.removeValue(forKey: "name")
- 遍歷字典
- 遍歷鍵
for key in dictM.keys {
print(key)
}
- 遍歷值
for value in dictM.values {
print(value)
}
- 遍歷鍵值對
for (key, value) in dictM {
print(key)
print(value)
}
- 合并字典
只能通過遍歷、往可變字典中追加的方式合并
</br>
九、元組
- 什么是元組?
一種類似于數(shù)組或者字典的數(shù)據(jù)結(jié)構(gòu),可以用于定義一組數(shù)據(jù)。常用于作為方法的返回值 - 定義元組
- 把元素用圓括號括起來,快速創(chuàng)建元組
let info1 = ("xyz",18,1.88)
通過點語法加下標(biāo)獲取元素
info1.0
</br>
- 創(chuàng)建元組的同時給元組起別名。
let info2 = (name : "xyz", age : 18, height : 1.88)
獲取元素時可以使用別名來獲取元素
info2.name
</br>
- 直接把元素的別名括起來作為元組的名稱。這樣的定義方式會直接給元素賦值,右側(cè)元組內(nèi)的元素會被分解為對應(yīng)的變量或常量
let (name, age , height) = ("xyz", 18, 1.88)
取元素時可以直接用別名取
name
- 元組的比較
如果元組中的值都可以比較,那么元組就可以比較
元組比較按照從左往右、逐值比較的方式進行,知道發(fā)現(xiàn)有兩個值不等為止。如果所有值都相等,那么兩個元組相等。
(1, "abc") < (2, "aaa") // true, 1 < 2
(4, "apple") < (4, "bad") //true, 4 == 4, apple < bad
("abc", 12) == ("abc", 12) //true 完全相等
注意:由于Bool類型不可以進行比較,所以包含布爾類型的元組不可比較
</br>