1. 数组

数组的命名

var TypeArray1 = Array ()
var TypeArray2 = [SomeType] ()
let intArray = [1, 2, 3, 4]
    //其中 SomeType是数据类型

数组的访问与查找

let intArray = [1, 2, 3, 4, 5]
print(intArray[1]) //结果 : 2
    //数组的访问可以直接通过下标语法实现, 数组的第 i 个元素对应的下表为 i - 1
intArray.isEmpty //判断数组是否为空, 结果 : false
intArray.count //获得数组中元素的数量, 结果 : 5
intArray.contains(3) //判断数组中是否包含 3 这个元素, 结果 : true

数组的编辑与输出

Swift 中, 可以使用 append() 或者 "+ []" 的方法对数组的元素进行增加; 可以使用 insert() 在指定的位置增加某个元素; 可以直接通过下标定位到指定位置直接对元素进行修改

var intArray = [1, 2, 3, 4, 5]
intArray.append(6) //intArray == [1, 2, 3, 4, 5, 6]
intArray += [6] //intArray == [1, 2, 3, 4, 5, 6, 6]
intArray.insert(100, at : 2) //intArray == [1, 2, 100, 3, 4, 5, 6, 6]
intArray[0] = 0 //intArray == [0, 2, 100, 3, 4, 5, 6, 6]

Swift 中, 可以通过一个下标区间 [minNumber ..< maxNumber] 或者 [minNumber ... maxNumber] 对指定元素进行修改

intArray[3…6] = [1, 2, 3, 4] //intArray == [0, 2, 100, 1, 2, 3, 4, 6]

Swift 数组提供了几种 remove 方法用来删除数组中的元素

intArray.removeFirst() //intArray == [2, 100, 1, 2, 3, 4, 6]
intArray.removeLast() //intArray == [2, 100, 1, 2, 3, 4]
intArray.remove(at : 2) //intArray == [2, 100, 2, 3, 4]
intArray.removeSubrange(Range(1 ..< 3))
    //intArray == [2, 3, 4]
intArray.removeAll() //intArray == []

Swift 数组在输出的时候, 可以选择部分输出, 部分输出需要具体指出需要输出元素的下标

let intArray = [1, 2, 3]
let emptyArray = Array ()
print(intArray[1]) //结果 : 2

Swift 数组在输出的时候, 也可以选择整体输出

print(intArray) //结果 : [1, 2, 3]
print(emptyArray) //结果 : []

数组的排序

Swift 提供了 sort() 函数对数组进行排序, 默认是升序

var intArray = [11, 22, 3, 14, 25]
intArray.sort() //intArray == [3, 11, 14, 22, 25]

在 sort() 函数中添加相关参数可以实现对数组进行降序排序

intArray.sort(by : >) //intArray == [25, 22, 14, 11, 3]

对于元组数组, 同样也可以用 sort() 函数对数组按照元组中的某一个元素进行排序

var userList = [(name : "Thomas", age : 20), (name : "John", age : 18), (name : "Bill", age : 28)]
userList.sort(by : {$0.name > $1.name})
    //对 userList 元组数组按照名字 name 的升序进行排序
    //userList == [[(name: "Bill", age: 28), (name: "John", age: 18), (name: "Thomas", age: 20)]]
userList.sort(by : {$0.age < $1.age})
    //对 userList 元组数组按照年龄 age 的升序进行排序
    //userList == [[(name: "John", age: 18), (name: "Thomas", age: 20), (name: "Bill", age: 28)]]

多维数组 : 在数组中仍然存在其他数组

通过几次索引可以找到存储的相关元素的具体值就为几维数组

多维数组的定义

let TypeArray = [[SomeType]] () //几维数组就有几个 "[]"
let intArray = [[1, 2, 3], [4, 5, 6]]

多维数组的编辑与访问

多维数组与一维数组一样可以通过 append() 函数在多维数组中添加更多数组元素

var numbers = [[1, 2, 3], [1, 2, 3]]
numbers.append([4, 5, 6])
    //numbers == [[1, 2, 3], [1, 2, 3], [4, 5, 6]]

多维数组可以通过下标来访问数组或者数组中的元素

var numbers = [[1, 2, 3], [4, 5, 6]]
print(numbers[2]) //结果 : [4, 5, 6]
print(numbers[2][1]) //结果 : 5

通过 for-in 循环对数组遍历

使用 "..<" 对数组遍历

var intArray = [1, 2, 3]
for index in 0..< intArray.cont {
    print(index)
}
    /*结果 :
        1
        2
        3
    */

不使用 "..<" 对数组遍历

var intArray = [1, 2, 3]
for index in intArray {
    print(index)
}
    /*结果 :
        1
        2
        3
    */

通过定义范围常量对数组指定范围内的数组元素进行遍历

var intArray = [1, 2, 3, 4, 5, 6]
let range = 3 ..< intArray.count
for index in zip(range, intArray[range]) {
    print(index)
}
    /*结果 :
        4
        5
        6
    */

对于复杂数组的遍历

let userList = [(name : "Thomas", age : 20), (name : "John", age : 18), (name : "Bill", age : 28)]
for (name, age) in userList {
    print(name + " 的年龄是 \(age).")
}
    /*结果 :
        Thomas 的年龄是 20.
        John 的年龄是 18.
        Bill 的年龄是 28.
    */

多维数组的遍历

let intArray = [[1, 2, 3], [4, 5, 6]]
for sArray in intArray {
    for num in sArray {
        print(num)
    }
}
    /*结果 :
        1
        2
        3
        4
        5
        6
    */

2. 字典

字典的创建

let dictionaryExample = Dictionary <KeyType, ValueType> ()
    //KeyType 即键, ValueType 即键对应的存储值. 这里的 KeyType 和 ValueType 为数据类型
let diallingCodes = ["010" : "Beijing", "021" : "Shanghai", "0592" : "Xiamen"]

字典的读取与编辑

Swift 中, 可以通过下标语法, 通过访问键获得其对应的值

let diallingCodes = ["010" : "Beijing", "021" : "Shanghai", "0592" : "Xiamen"]
print(diallingCodes["010"]) //结果 : Beijing

通过下标语法还可以往字典中新的元素

var diallingCodes = ["010" : "Beijing", "021" : "Shanghai"]
diallingCodes["020"] = "Guangdong"
    //dialingCodes = ["010" : "Beijing", "021" : "Shanghai", "020" :"Guangdong"]

通过下标语法可以直接通过键修改对应的存储值

var diallingCodes = ["010" : "Beijing", "021" : "Shanghai"]
disllingCodes["010"] = "北京"
    //diallingCodes = ["010" : "北京", "021" : "Shanghai"]

Swift 中, 也可以通过 updateValue() 函数修改指定键的值

var diallingCodes = ["010" : "Beijing", "021" : "Shanghai"]
diallingCodes.updateValue("北京", forKey : "010")
    //diallingCodes = ["010" : "北京", "021" : "Shanghai"]

当需要删除字典中的某个对键值时, 可以使用 removeValueForKey() 的方法, 或者使某个键的值设为 nil

var diallingCodes = ["010" : "Beijing", "021" : "Shanghai"]
diallingCodes.removeValue(forKey : "010")
    //diallingCodes = ["020" : "Shanghai"]
diallingCodes["021"] = nil
    //diallingCodes = [:]

当字典值为空的时候, 字典的输出 :

let dictionary = Dictionary <String, int> ()
print(dictionary) //结果 : [:] 

使用 for-in 循环对字典遍历

对键的遍历

let diallingCodes = ["010" : "Beijing", "021" : "Shanghai", "0592" : "Xiamen"]
for key in diallingCodes {
    print(key)
}
    /*结果 :
        010
        021
        0592
    */

对值的遍历

let diallingCodes = ["010" : "Beijing", "021" : "Shanghai", "0592" : "Xiamen"]
for value in diallingCodes {
    print(value)
}
    /*结果 :
        Beijing
        Shanghai
        Xiamen
    */

对字典中每一项数据组成的 (key, value) 元组进行遍历

let diallingCodes = ["010" : "Beijing", "021" : "Shanghai", "0592" : "Xiamen"]
for (key, value) in diallingCodes {
    print(key + " : " + value)
}
    /*结果 :
        021 : Shanghai
        010 : Beijing
        0592 : Xiamen
    */