前言
swift中的數(shù)組和OC中的數(shù)組大體上是一樣的,下面我們一一了解一下OC與swift中數(shù)組的區(qū)別.

數(shù)組.png
- swift中的數(shù)組和OC中的數(shù)組之間的區(qū)別
首先我們回顧一下OC中定義數(shù)組是怎么定義的
NSArray *array = @["William", "Alex"];
但是swift中定義數(shù)組和OC中定義數(shù)組就有點(diǎn)區(qū)別了,和定義常量或者變量一樣,都是用聲明符號來修飾的.
定義數(shù)組時, 如果使用let就表示定義的是一個不可變的數(shù)組
如果是使用var就表示定義的是一個可變的數(shù)組
并且在swift中沒有@符號
// 定義一個數(shù)組,和OC的區(qū)別就是沒有@符號
let array1 = ["william", "Alex"]
// swift中的數(shù)組可以存儲任意類型(注意:在OC中只能存儲同種類型)
let array2 = ["William", "age", 18, 187.10]
一, 數(shù)組的定義
- 先定義后初始化
定義格式:
方式一: 先定義后初始化(不推薦這種寫法)
var arr1: Array<Int>
arr1 = [10, 15, 100]
let arr = [15, 12.5]
- 在定義的同時初始化
方式二: 在定義的同時初始化
var arr2: [Int] = [15, 785, 45, 55]
- 在定義的同時初始化,并且省略數(shù)組的類型標(biāo)注,直接使用類型推導(dǎo)(推薦寫法)
方式三: 定義的同時初始化,并且類型有數(shù)組中的值推導(dǎo)出來,如果類型一致,那么數(shù)組就是該類型,如果數(shù)組中的元素不一致,那么數(shù)組的類型就是NSObject類型
// Int類型
let arr = [15, 12]
// 數(shù)組類型為NSObject
let arr = ["William", "Alex", 15, 12.5]
- 遍歷數(shù)組和取值
// swift中的數(shù)組可以存儲任意類型(注意:在OC中只能存儲同種類型)
let array2 = ["William", "age", 18, 187.10]
// 取值(和OC一樣)
print(array2[2])
// 遍歷數(shù)組
for item in array2 {
print(item)
}
對數(shù)組進(jìn)行增(添加), 刪(刪除), 改(修改), 查(獲取)
- 追加
// 向數(shù)組中追加數(shù)據(jù)(增或者刪 都是針對的是可變數(shù)組而言,所以需要用var修飾)
var array3 = ["William", "Alex"]
array3.append("J")
print(array3)
- 增加數(shù)組的容量
// 增加數(shù)組的容量, 在當(dāng)前的容量乘以2
var array3 = ["William", "Alex"]
array3.append("Will")
array3.capacity
array3.append("wiiliam")
array3.capacity
array3.append("Alex")
array3.capacity
array3.append("C")
array3.capacity
array3.append("B")
array3.capacity
array3.append("A")
array3.capacity
array3.append("W")
array3.capacity
- 刪除
// 刪除指定元素
array3.removeAtIndex(0)
array3
// 刪除第0個元素
array3.removeFirst()
array3
// 刪除最后一個元素
array3.removeLast()
array3
// 刪除所有元素
array3.removeAll()
array3
// 刪除所有, 如果傳人的ture,代表刪除之后需要保持?jǐn)?shù)組現(xiàn)有的容量, 如果傳人的是false,就表示不用保持當(dāng)前的容量
array3.capacity
array3.removeAll(keepCapacity: false)
array3.capacity
- 修改
// 修改數(shù)組中的元素的值(和OC一樣直接通過索引來修改)
var array3 = ["William", "Alex", "A", "B", "C"]
array3[2] = "曾晶";
array3
- 查
var array3 = ["William", "Alex"]
array3.append("J")
print(array3)
- 遍歷
// 在swift中可以指定范圍遍歷數(shù)組
for item in array3[0..<3] {
print(item)
}
- 合并
// 合并兩個數(shù)組(這里和OC有點(diǎn)區(qū)別,在swift中直接使用+既可以將兩個數(shù)組中的元素全部合并在一個數(shù)組中)
var arr2 = ["物流", "計(jì)算機(jī)", "電商"]
var arr3 = array3 + arr2
arr3
// 這里有個問題; arr3 是String類型, 而arr4是Int類型,這里報(bào)錯了,說明這兩個數(shù)組是不能合并的
// 原因: swift是一門強(qiáng)語言, 在不同類型之間是不能進(jìn)行運(yùn)算的,也就是說不能進(jìn)行合并
var arr6 = ["William", 18]
var arr7 = ["Alex"]
var arr8 = [15, 18, 15]
// NSObject 類型和String類型(合并報(bào)錯)
//arr6 += arr7
// Int 類型和String類型(合并報(bào)錯)
//arr6 += arr8
// NSObject 類型和int類型(合并報(bào)錯)
//arr7 += arr8
- 指定范圍刪除元素
// 在swift中還能指定范圍刪除數(shù)組的元素
var arr9 = [0, 1, 2, 3, 4, 5]
arr9.removeRange(0..<2) //刪除了0,1
arr9
var arr = [0, 1, 2, 3, 4, 5]
arr.removeRange(0...2) //刪除了0,1
arr
- 判斷數(shù)組是否為空
// 方式一: isEmpty
if shoppingList.isEmpty {
print("The shopping list is empty.")
} else {
print("The shopping list is not empty.")
}
// 或者通過count屬性
if shoppingList.count == 0 {
print("The shopping list is empty.")
} else {
print("The shopping list is not empty.")
}