數(shù)組的定義塔插,包含混合數(shù)組
func demo() {
//自動(dòng)推到的結(jié)果是[String],表示數(shù)組中存放都是[String],這一點(diǎn)和OC中的數(shù)組制定泛型類似
let array = ["張三","李四","王二"]
print(array)
//Swift中的基本數(shù)據(jù)類型不用包裝梗摇,OC中需要用包裝
//自動(dòng)推到類型為[Int]
let array2 = [1,2,3,4,5]
print(array2)
//CG結(jié)構(gòu)體
let p = CGPoint(x: 10, y: 300)
//自動(dòng)推到類型為[CGPoint]
let array3 = [p]
print(array3)
//混合數(shù)組:開發(fā)中幾乎不用
//如果數(shù)組中的類型不一致,自動(dòng)推到結(jié)果為[NSObject]
//在Swift中還有一種類型[AnyObject]-->代表任意對(duì)象想许,比NSObject包含的范圍更廣伶授。說明:在Swift中一個(gè)類可以沒有任何父類,所以會(huì)出現(xiàn)AnyObject
//*** 在混合的數(shù)組中流纹,CG結(jié)構(gòu)體需要包裝糜烹,如果不是混合類型數(shù)組就不用包裝
let point = CGPoint(x: 10, y: 300)
let array4 = ["張三",1,NSValue(cgPoint:point)] as [Any]
print(array4)
}
數(shù)組的六種遍歷方式,包含倒序遍歷兩種方式漱凝。
func demo() {
let array = ["張三","李四","王二"]
//1疮蹦、按照下標(biāo)遍歷
for i in 0..<array.count {
print(array[i])
}
//2、按照元素遍歷
for s in array{
print(s)
}
//3茸炒、enum block,同時(shí)遍歷下標(biāo)和元素
for e in array.enumerated() {
//這個(gè)e是一個(gè)元組愕乎,里面包含offset(下標(biāo)) element(內(nèi)容)
print("\(e.offset)\(e.element)")
}
//4、遍歷下標(biāo)和內(nèi)容之二
for(n,s) in array.enumerated(){
//n是索引 s是n索引對(duì)應(yīng)的元素壁公,其中n和s可以隨意寫
print("\(n) \(s)")
}
//5感论、倒序遍歷
for s in array.reversed(){
print(s)
}
//6、倒序索引和元素遍歷
//這是正確的紊册,下面的第二個(gè)是錯(cuò)誤的比肄。應(yīng)該先枚舉在倒序
for (n,s) in array.enumerated().reversed(){
print("\(n)\(s)")
}
//這是錯(cuò)誤的
//for (n,s) in array.reversed().enumerated(){
// print("\(n)\(s)")
//}
}
數(shù)組的增刪改操作。
func demo() {
var arr = ["張三","李四","王二"]
//增
arr.append("老王")
arr.insert("你好", at: 0)
print(arr)
//改
arr[0] = "小王"
print(arr)
//刪
arr.remove(at: 4)
print(arr)
//刪除全部囊陡,并且保存空間
arr.removeAll(keepingCapacity: true)
}
數(shù)組的容量芳绩。
func demo() {
//定義一個(gè)數(shù)組,制定類型存放[Int]的數(shù)組 但是沒有初始化
var array: [Int]
//給數(shù)組初始化
array = [Int]()
//以上兩句可以合并寫成一句
var array2 = [Int]()
print("初始容量\(array2.capacity)")
for i in 0..<8{
array2.append(i)
//容量不夠使用的時(shí)候关斜,每次增加之前容量的一倍示括,這樣可以避免每次增加數(shù)據(jù)時(shí)都開辟空間
print("\(array2)容量\(array2.capacity)")
}
}
數(shù)組的合并。
func demo() {
//常規(guī)數(shù)組合并
var arr = ["張三","李四","王二"]
let arr2 = ["小王","1"]
arr += arr2;
print(arr)
//注意:要合并的兩個(gè)數(shù)組的類型必須要一致痢畜。如下是一種錯(cuò)誤的寫法:
// var arr3 = ["張三","李四","王二"]
// let arr4 = ["小王","1",100]
// arr3 += arr4;
// print(arr3)
//正確的寫法如下
var arr3: [NSObject] = ["張三" as NSObject,"李四" as NSObject,"王二" as NSObject]
let arr4: [NSObject] = ["小王" as NSObject,"1" as NSObject,100 as NSObject]
arr3 += arr4;
print(arr3)
}