數(shù)組的定義,包含混合數(shù)組
func demo() {
//自動推到的結果是[String],表示數(shù)組中存放都是[String],這一點和OC中的數(shù)組制定泛型類似
let array = ["張三","李四","王二"]
print(array)
//Swift中的基本數(shù)據類型不用包裝,OC中需要用包裝
//自動推到類型為[Int]
let array2 = [1,2,3,4,5]
print(array2)
//CG結構體
let p = CGPoint(x: 10, y: 300)
//自動推到類型為[CGPoint]
let array3 = [p]
print(array3)
//混合數(shù)組:開發(fā)中幾乎不用
//如果數(shù)組中的類型不一致,自動推到結果為[NSObject]
//在Swift中還有一種類型[AnyObject]-->代表任意對象,比NSObject包含的范圍更廣。說明:在Swift中一個類可以沒有任何父類,所以會出現(xiàn)AnyObject
//*** 在混合的數(shù)組中,CG結構體需要包裝,如果不是混合類型數(shù)組就不用包裝
let point = CGPoint(x: 10, y: 300)
let array4 = ["張三",1,NSValue(cgPoint:point)] as [Any]
print(array4)
}
數(shù)組的六種遍歷方式,包含倒序遍歷兩種方式。
func demo() {
let array = ["張三","李四","王二"]
//1、按照下標遍歷
for i in 0..<array.count {
print(array[i])
}
//2、按照元素遍歷
for s in array{
print(s)
}
//3、enum block,同時遍歷下標和元素
for e in array.enumerated() {
//這個e是一個元組,里面包含offset(下標) element(內容)
print("\(e.offset)\(e.element)")
}
//4、遍歷下標和內容之二
for(n,s) in array.enumerated(){
//n是索引 s是n索引對應的元素,其中n和s可以隨意寫
print("\(n) \(s)")
}
//5、倒序遍歷
for s in array.reversed(){
print(s)
}
//6、倒序索引和元素遍歷
//這是正確的,下面的第二個是錯誤的。應該先枚舉在倒序
for (n,s) in array.enumerated().reversed(){
print("\(n)\(s)")
}
//這是錯誤的
//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() {
//定義一個數(shù)組,制定類型存放[Int]的數(shù)組 但是沒有初始化
var array: [Int]
//給數(shù)組初始化
array = [Int]()
//以上兩句可以合并寫成一句
var array2 = [Int]()
print("初始容量\(array2.capacity)")
for i in 0..<8{
array2.append(i)
//容量不夠使用的時候,每次增加之前容量的一倍,這樣可以避免每次增加數(shù)據時都開辟空間
print("\(array2)容量\(array2.capacity)")
}
}
數(shù)組的合并。
func demo() {
//常規(guī)數(shù)組合并
var arr = ["張三","李四","王二"]
let arr2 = ["小王","1"]
arr += arr2;
print(arr)
//注意:要合并的兩個數(shù)組的類型必須要一致。如下是一種錯誤的寫法:
// 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)
}