免费开源的iOS开发学习平台

Swift: 5.1 集合类型-数组

Swift提供了数组、集合、字典这三种集合类型。数组是下标从0开始的有序的序列值,集合是一组无序的、无重复的值,而字典是一组无序的、以键值对(key-value)形式存储的值。不管是数组、集合还是字典,其中存储的数据的类型是确定的。这就保证了在插值和取值的过程中,所操作的值类型不会出现混淆的情况。常量和变量对于集合类型同样是适用的,也就是说如果集合类型声明为常量,就不可以对集合进行插值、删值或者更改值的操作。

数组

  • 数组存储的数据的类型是固定的,数组类型全写是Array<Element>,一般都简写成“[Element]”。如果通过上下文可以推断出数组的类型,初始化一个空数组的时候,也可以简写成”[]“。也可以在初始化数组的时候,给数组提供一个长度以及初始化的值。还可以通过数组字面量的形式来初始化数组。
var intArr = [Int]()
print("intArr is of type [Int] with \(intArr.count) items.")
//打印结果:intArr is of type [Int] with 0 items.
intArr.append(1)
//现在intArr里面有1个值了
intArr = []
//intArr 又是一个空数组了,不过它的类型还是[int]

var doubleArr = Array(repeating:0.0, count:5)
// doubleArr是个Double类型的数组,默认值是[0.0,0.0,0.0,0.0,0.0]

var strArr = ["Apple","Orange"]
// strArr是个String类型的数组
  • 跟Objective-C一样,数组可以通过下标进行赋值和取值。不过,Swift还提供了一次性修改某个区间内数组的值。
print(strArr[0]) //打印:Apple
strArr[0..<2] = ["Bananas","Juice"]
 //现在strArr是["Bananas","Juice"]了
  • 数组类型的提供了insert(_:at:)和remove(at:)以及removeLast()来对数组进行插入和删除操作。
strArr.insert("Apple",at:0)
//strArr的值现在是["Apple","Bananas","Juice"]

let apple = strArr.remove(at:0)
//apple是"Apple",strArr里面还剩下两个值了

print(strArr[0])
//打印结果:Bananas

let juice = strArr.removeLast()
//juice的值是"Juice",strArr还剩下一个值
  • 可以通过for-in循环来遍历数组。如果需要在循环过程中获取下标值,可以通过数组的enumerated()来返回(下标,值)这样的元组。
for item in strArr{
    print(item)
}

//循环输出下标和值
for (index,item) in strArr.enumerated(){
    print("Item \(index + 1): \(item)")
}   
  • 示例代码运行结果如下。

示例代码

https://github.com/99ios/23.5.1