Swift 数组

在本教程中,您将通过实例学习 Swift 数组。

数组是类似类型数据的集合。例如

假设我们需要记录 5 名学生的年龄。我们可以简单地创建一个数组,而不是创建 5 个单独的变量:


创建一个 Swift 数组

下面是我们如何在 Swift 中创建数组。

  1. // an array of integer type
  2. var numbers : [Int] = [2, 4, 6, 8]
  3. print("Array: \(numbers)")

结果如下:

  1. Array: [2, 4, 6, 8]

在上面的实例中,我们创建了一个名为 numbers 的数组。这里,[Int] 指定数组只能存储整数数据。

Swift 是一种类型推理语言,即它可以根据数组的值自动识别数组的数据类型。因此,我们可以在不指定数据类型的情况下创建数组。例如:

  1. var numbers = [2, 4, 6, 8]
  2. print("Array: \(numbers)") // [2, 4, 6, 8]

创建一个空数组

在 Swift 中,我们还可以创建一个空数组。例如:

  1. var value = [Int]()
  2. print(value)

结果为:

  1. []

在上面的实例中,value 是一个不包含任何元素的空数组。

重要的是要注意,在创建空数组时,必须在方括号 [] 内指定数据类型,然后使用初始化器语法 ()。这里,[Int]() 指定空数组只能存储整数数据元素。

注意:在 Swift 中,我们可以创建任何数据类型的数组,如 IntString 等。

访问数组元素

在 Swift 中,数组中的每个元素都与一个数字关联。该数字称为数组索引。

我们可以使用索引号(0,1,2…)访问数组的元素。例如:

  1. var languages = ["Swift", "Java", "C++"]
  2. // access element at index 0
  3. print(languages[0]) // Swift
  4. // access element at index 2
  5. print(languages[2]) // C++

在上面的实例中,我们创建了一个名为 languages 的数组。

在这里,我们可以看到每个数组元素都与索引号关联。然后,我们使用索引号访问元素。

注意:数组索引总是从 0 开始。因此,数组的第一个元素出现在索引 0,而不是 1。

向数组添加元素

Swift 数组提供了向数组添加元素的不同方法。

1.使用 append()

append() 方法在数组末尾添加一个元素。例如:

  1. var numbers = [21, 34, 54, 12]
  2. print("Before Append: \(numbers)")
  3. // using append method
  4. numbers.append(32)
  5. print("After Append: \(numbers)")

结果如下:

  1. Before Append: [21, 34, 54, 12]
  2. After Append: [21, 43, 54, 12, 32]

在上面的实例中,我们创建了一个名为 numbers 的数组。注意这一行,

  1. numbers.append(32)

这里,append() 在数组的末尾添加 32。

我们还可以使用 append() 方法将一个数组的所有元素添加到另一个数组中。例如:

  1. var primeNumbers = [2, 3, 5]
  2. print("Array1: \(primeNumbers)")
  3. var evenNumbers = [4, 6, 8]
  4. print("Array2: \(evenNumbers)")
  5. // join two arrays
  6. primeNumbers.append(contentsOf: evenNumbers)
  7. print("Array after append: \(primeNumbers)")

结果如下:

  1. Array1: [2, 3, 5]
  2. Array2: [4, 6, 8]
  3. Array after append: [2, 3, 5, 4, 6, 8]

在上面的实例中,我们有两个名为 primeNumbersevenNumbers 的数组。注意这一句,

  1. primeNumbers.append(contentsOf: evenNumbers)
注意:如果要将一个数组中的所有元素添加到另一个数组,则必须使用带有 append()contentOf
2. 使用 insert()

insert() 方法用于在数组的指定位置添加元素。例如:

  1. var numbers = [21, 34, 54, 12]
  2. print("Before Insert: \(numbers)")
  3. numbers.insert(32, at: 1)
  4. print("After insert: \(numbers)")

结果为:

  1. Before insert: [21, 34, 54, 12]
  2. After insert: [21, 32, 34, 54, 12]

这里,numbers.insert(32,at:1)索引 1 处添加 32


修改数组的元素

我们可以使用数组索引来修改数组元素。例如:

  1. var dailyActivities = ["Eat","Repeat"]
  2. print("Initial Array: \(dailyActivities)")
  3. // change element at index 1
  4. dailyActivities[1] = "Sleep"
  5. print("Updated Array: \(dailyActivities)")

结果为:

  1. Initial Array: ["Eat", "Repeat"]
  2. Updated Array: ["Eat", "Sleep"]

这里,最初 索引 1 处的值是 Repeat。然后,我们使用将值更改为 Sleep

  1. dailyActivities[1] = "Sleep"

从数组中移除元素

我们可以使用 remove() 方法从数组中移除最后一个元素。例如,

  1. var languages = ["Swift","Java","Python"]
  2. print("Initial Array: \(languages)")
  3. // remove element at index 1
  4. let removedValue = languages.remove(at: 1)
  5. print("Updated Array: \(languages)")
  6. print("Removed value: \(removedValue)")

结果为:

  1. Initial Array: ["Swift", "Java", "Python"]
  2. Updated Array: ["Swift", "Python"]
  3. Removed value: Java

类似地,我们还可以使用

  • removeFirst() - 删除第一个元素

  • removeLast() - 删除最后一个元素

  • removeAll() - 删除数组中的所有元素


其他数组方法

方法描述
sort()对数组元素排序
shuffle()改变数组元素的顺序
forEach()为每个元素调用一个函数
contains()搜索数组中的元素
swapAt()交换数组元素的位置
reverse()反转数组元素的顺序

循环数组

我们可以使用 for 循环 迭代数组的元素。例如,

  1. // an array of fruits
  2. let fruits = ["Apple", "Peach", "Mango"]
  3. // for loop to iterate over array
  4. for fruit in fruits {
  5. print(fruit)
  6. }

结果如下:

  1. Apple
  2. Peach
  3. Mango

查找数组元素数量

我们可以使用 count 属性来查找数组中存在的元素数。例如,

  1. let evenNumbers = [2,4,6,8]
  2. print("Array: \(evenNumbers)")
  3. // find number of elements
  4. print("Total Elements: \(evenNumbers.count)")

结果如下:

  1. Array: [2, 4, 6, 8]
  2. Total Elements: 4

检查数组是否为空

isEmpty 属性用于检查数组是否为空。例如,

  1. // array with elements
  2. let numbers = [21, 33, 59, 17]
  3. print("Numbers: \(numbers)")
  4. // check if numbers is empty
  5. var result = numbers.isEmpty
  6. print("Is numbers empty? : \(result)")
  7. // array without elements
  8. let evenNumbers = [Int]()
  9. print("Even Numbers: \(evenNumbers)")
  10. // check if evenNumbers is empty
  11. result = evenNumbers.isEmpty
  12. print("Is evenNumbers empty? : \(result)")

结果如下:

  1. Numbers: [21, 33, 59, 17]
  2. Is numbers empty? : false
  3. Even Numbers: []
  4. Is evenNumbers empty? : true

在上面的实例中,我们使用 isEmpty 属性检查数组编号和偶数是否为空。在这里, iEmpty 返回

  • true - 如果数组为空
  • false - 如果数组不为空

具有混合数据类型的数组

到目前为止,我们一直在使用数组来保存单一数据类型的元素。

然而,在 Swift 中,我们也可以创建可以保存多种数据类型元素的数组。例如,

  1. // array with String and integer data
  2. var address: [Any] = ["Scranton", 570]
  3. print(address)

结果如下:

  1. ["Scranton", 570]

在上面的实例中,我们创建了一个名为 address 的数组。

  1. var address: [Any] = ["Scranton", 570]

这里,[Any] 指定地址可以保存任何数据类型的元素。在这种情况下,它存储字符串和整数数据。