數組
創建一個數組,可變的空數組,打印結果為
[]
var arr1 = [String]()
print(arr1)
以字面量初始化一個數組:
var arr1: [String] = ["wang66", "wang77", "wang88"]
print(arr1)
因為Swift有類型檢測,所以不用申明數組類型也完全可以,它會根據所賦的字面值自己推斷未
String
類型
var arr1 = ["wang66", "wang77", "wang88"]
print(arr1)
給數組追加新的元素:
var arr1: [String] = ["wang66", "wang77", "wang88"]
arr1.append("wang99")
print(arr1)
給數組追加新的數組:
var arr1: [String] = ["wang66", "wang77", "wang88"]
arr1 += ["wang99", "wang00"]
print(arr1)
將倆數組拼接。在Swift中字符串和集合拼接都用
+
號就行
var arr1: [String] = ["wang66", "wang77", "wang88"]
var arr2 = ["wang99", "wang00"]
var resultArr = arr1 + arr2
print(res ultArr)
對數組進行刪除操作。下面幾個刪除方法均有返回值,返回被刪除的數組元素。通常情況下你不用管返回值。
var arr1: [String] = ["wang66", "wang77", "wang88"]
arr1.removeLast()
arr1.removeFirst()
let deletedElement = arr1.remove(at: 0)
print(deletedElement)
print(arr1)
修改、更新數組元素。你不僅可以通過下標索引修改一個元素,也可以批量修改。
var arr1: [String] = ["wang66", "wang77", "wang88"]
arr1[0] = "Jobs"
arr1[1...2] = ["Yaren", "Tom"] // 根據下標區間,批量修改
print(arr1)
讀取數組。
let str0 = resultArr[0]
print(str0)
let strFirst = resultArr.first
if let tempStr = strFirst{
print(tempStr)
}
print(strFirst!)
let strLast = resultArr.last
print(strLast!)
數組中插入元素
var arr1: [String] = ["wang66", "wang77", "wang88"]
arr1.insert("wang00", at: 0)
print(arr1)
遍歷數組。當需要數組索引時,可以用
enumerated()
遍歷得到一個個元組,index
即為索引,value
即為元素的值。
// 遍歷數組
for item in resultArr {
print(item)
}
for (index, value) in resultArr.enumerated() {
print("item=\(index), value=\(value)")
}
字典
字典的用法和數組很相似。
創建一個字典。一個key和value均為
String
類型的字典,隨即設置字符串"wang1"
為鍵"name"
的值
var dict1 = [String:String]()
dict1["name"] = "wang1"
print(dict1)
以字面量初始化一個字典。鍵值均為
String
類型,且已有兩個鍵name
和age
。
var dict2: [String:String] = ["name":"wang1", "age":"23"]
print(dict2)
與數組類似的,它也完全可以不必申明鍵值類型,Swift會自己檢測
var dict3 = ["name":"wang1"]
print(dict3)
修改、更新鍵值。也提供了
updateValue(value: forkey:)
方法,它有返回值,代表被修改的鍵的原始值。一般可忽略該返回值。
var dict = ["name":"wang66", "age":"24"]
dict["age"] = "18"
let result = dict.updateValue("wang666", forKey: "name")
print(result!)
print(dict)
刪除字典元素,刪除某鍵對應的數據。
var dict = ["name":"wang66", "age":"24"]
dict.removeValue(forKey: "age")
print(dict)
遍歷字典。遍歷字典時是一個個的元組。
// 遍歷
for (dictKey, dictValue) in dict1 {
print("\(dictKey)=\(dictValue)")
}
// 遍歷所有key
for key in dict1.keys {
print("key=\(key)")
}
// 遍歷所有values
for value in dict2.values {
print("value=\(value)")
}
枚舉
在OC中可以把枚舉理解為取了個別名的整型數。但是Swift的枚舉卻發生了很大變化,它可以是任意類型。應該這么說,定義了一個枚舉,就是定義了一個類型,它里面的成員的類型就是該枚舉,它有點類似類和結構體的感覺。 比如下面定義了一個
PositionType
枚舉,對于它的成員north
,south
...來說,它們的類型就是PositionType
。
enum PositionType {
case north
case south
case east
case west
}
使用時直接用點語法就可以了。當通過點語法將枚舉值賦給
direction
時,Swift便會推斷出其類型,所以再后續操作direction
時,甚至可以省略枚舉名了,直接用點語法點出它的成員來。
var direction = PositionType.north
direction = .east
print(direction)
// log:east
Swift中可以給枚舉的成員設置“原始值”,所有成員的原始值的類型必須相同。下面這個叫
BallType
的枚舉,它的成員原始值都是String
類型的。
enum BallType: String {
case basketball = "BB"
case football = "FB"
case golfball = "GB"
}
現在給枚舉的成員已然設置了“原始值”,那我們怎么獲取“原始值”呢?——通過成員的
rawValue
方法。
let rawValue = BallType.basketball.rawValue
print(rawValue)
** 枚舉的隱式賦值:**雖說Swift中的枚舉成員不像OC那樣,默認第一個成員值為0,然后依次遞增。Swift的枚舉成員默認是沒值的,更不用說值遞增了。但是,若你手動的給第一個成員設置一個值,那此時,它后面的成員便會遞增。
定義一個分數等級的枚舉。將第一個成員D
手動賦值為1。
// 分數等級
enum ScoreLevel: Int {
case D = 1
case C
case B
case A
}
獲取成員B
的值,打印結果可以看到B
的值為3。
let score = ScoreLevel.B.rawValue
print(score)
// log:3