iOS开发部分-6

迅捷数组

在本教程中,您将学习数组,创建数组,访问数组的值以及数组中的一些常见操作。

目录

  1.什么是数组? 
2.如何声明数组?
2.1声明包含重复值指定数量的数组
时报
3.值如何存储在数组中?
4.修改数组元素
4.1整体修改数组
4.2添加新的数组元素
5.一些有用的内置数组函数和属性
5.1 isEmpty
5.2首先
5.3附加
5.4插入
5.5移除
5.6倒转
5.7个

在之前的Swift Data Types文章中,我们了解了如何创建可以容纳单个值的某些Data Type的变量/常量。

但是,如果我们要存储相同数据类型的多个值怎么办。 我们在Swift中使用了一个叫做Array的东西。

什么是数组?

数组只是一个容器,可以在有序列表中保存一个数据类型的多个数据(值),即,您以与定义数组中的项相同的顺序获得元素。

数组可以存储任何数据类型的值,例如IntString ,class等。

如何在Swift中声明数组?

您可以通过在方括号 [] 指定数据类型来创建一个空数组

请记住,您必须在方括号内包括类型,否则Swift会将其视为普通数据类型,并且您只能在其中存储一个值。

声明一个空数组

有三(3)种方法可以在Swift中创建空数组,而速记语法方式始终是首选。

方法1:速记语法

 var arr = [Int]() 

方法2:数组初始化

 var arr = Array() 

方法3:具有数组文字的数组

 var arr:[Int] = [] 

方法4:

 var arr:Array = [] 

示例1:声明一个空数组

 let emptyIntArr:[Int] = [] 
print(emptyIntArr)

运行该程序时,输出为:

  [] 

在上面的程序中,我们声明了一个常量emptyIntArr,它可以存储整数数组并用0值初始化。

要么

您还可以如下定义一个空数组:

 let emptyIntArr:Array = Array() 
print(emptyIntArr)

要么

由于swift是一种类型推断语言,因此您也可以直接创建数组而无需指定数据类型,但必须使用一些值进行初始化,以便编译器可以将其类型推断为:

示例2:声明具有某些值的数组

 let someIntArr = [1, 2, 3, 4, 5, 6, 7, 8, 9] 
print(someIntArr)

运行该程序时,输出为:

  [1、2、3、4、5、6、7、8、9] 

在上面的程序中,我们声明了一个常量some​​IntArr,该常量可以存储Integer数组,而无需显式指定类型。 另外,我们已经用1、2、3、4、5、6、7、8、9值初始化了数组。

示例3:声明一个包含指定数量的单个重复值的数组

您还可以重复给定值多次以在Swift中形成数组。 这是通过使用带有重复和计数的数组初始化器来完成的。

 let arrWithRepeatingValues = Array(repeating: "Hello, World", count: 4) 
print(arrWithRepeatingValues)

运行该程序时,输出为:

  [“ Hello,World”,“ Hello,World”,“ Hello,World”,“ Hello,World”] 

在上面的程序中,我们定义了一个常量arrWithRepeatingValues,该常量存储字符串Hello,World的数组,并将相同的值重复4次,如count中所指定。

注意:在Swift中,不能像在其他编程语言中那样创建定长大小的数组。 固定长度大小的数组意味着,数组不能包含比您在初始化期间定义的元素更多的元素。

值如何存储在数组中?

假设您有一个可以存储字符串数组的常量,如下所示:

 让intArr = [21,34,54,12] 

值如何存储在数组中的图形表示如下所示:

您创建的所有数组都从索引0开始。第一个元素存储在索引0中,第二个元素存储在下一个索引(1)中,依此类推。

如何在Swift中访问数组元素?

您可以使用 标语法 来访问数组的元素,即您 需要包括 要访问的值的索引 数组名称 后方括号内

假设您如上所述声明了一个数组intArr。
第一个元素是intArr [0],
第二个元素是intArr [1],依此类推。

示例4:访问数组的元素

 let intArr = [21, 34, 54, 12] 
print(intArr[0])
print(intArr[1])
print(intArr[2])
print(intArr[3])

运行该程序时,输出为:

  21 
34
54
12

如何在Swift中修改/添加数组元素?

您可以使用下标语法和赋值运算符来修改数组的元素,即,需要在数组名称后的方括号内包括要更新的值的索引,然后是赋值运算符和new value。

示例5:修改数组的元素

 var intArr = [21, 34, 54, 12] 
intArr[0] = 12
intArr[1] = 42
intArr[2] = 45
intArr[3] = 21
print(intArr)

运行该程序时,输出为:

  [12、42、45、21] 

您还可以使用新值修改数组的所有元素,如下所示:

示例6:整体修改数组

 var intArr = [21, 34, 54, 12] 
intArr = [1,2,3]
print(intArr)

运行该程序时,输出为:

  [1,2,3] 

但是,要将新元素添加到现有数组中,则不能使用下标语法。 如果这样做,最终将导致错误。 您不能执行以下操作:

示例7:使用下标语法在数组中添加新元素(无效)

 var intArr = [21, 34, 54, 12] 
intArr[4] = 10

运行该程序时,输出为:

 致命错误:索引超出范围 

在将新元素分配给数组intArr时,上述程序给出了错误。 这是因为intArr尚未为索引4分配额外的内存,并且无法存储给定的值。

为了正确地将新元素插入数组,我们使用数组的append()方法。 下一节介绍了append()

一些有用的内置Array函数和属性

1. isEmpty

此属性确定数组是否为空。 如果数组不包含任何值,则返回false否则返回false

示例8:isEmpty如何工作?

 let intArr = [21, 34, 54, 12] 
print(intArr.isEmpty)

运行该程序时,输出为:

2.首先

此属性用于访问数组的第一个元素。

示例9:首先如何工作?

 let intArr = [21, 34, 54, 12] 
print(intArr.first)

运行该程序时,输出为:

 选件(21) 

同样,您可以使用last属性访问数组的最后一个元素。

3.追加

append函数用于在数组末尾插入/附加元素。

示例10:append如何工作?

 var intArr = [21, 34, 54, 12] 
intArr.append(32)
print(intArr)

运行该程序时,输出为:

  [21、34、54、12、32] 

您还可以将一个数组的内容附加到另一个数组,如下所示:

 var firstArr = [1,2,3,4] 
var secondArr = [5,6,7,8]
firstArr.append(contentsOf: secondArr)
print(firstArr)

运行该程序时,输出为:

  [1、2、3、4、5、6、7、8] 

4.插入

此函数用于在数组的特定索引处插入/附加元素。

示例11:插入如何工作?

 var intArr = [21,34,54,12] 
intArr.insert(22, at: 1)
print(intArr)

运行该程序时,输出为:

  [21、22、34、54、12] 

同样,您也可以使用remove属性删除指定索引处的元素。

5.删除

此函数从数组中删除并返回在指定位置指定的值。

示例12:删除如何工作?

 var strArr = ["ab","bc","cd","de"] 
let removedVal = strArr.remove(at: 1)
print("removed value is \(removedVal)")
print(strArr)

运行该程序时,输出为:

 移除值是bc 
[“ ab”,“ cd”,“ de”]

同样,您还可以使用诸如removeFirst功能来删除数组的第一个元素,使用removeLast来删除数组的最后一个元素,以及使用removeAll来清空数组。

6.反转

此函数以相反的顺序返回数组的元素。

示例13:reversed()如何工作?

 var intArr = [21,22,23,24] 
let reversedArr = Array(intArr.reversed())
print(reversedArr)

运行该程序时,输出为:

  [24、23、22、21] 

7.计数

此属性返回数组中元素的总数。

示例14:计数

 let floatArr = [10.2,21.3,32.0,41.3] 
print(floatArr.count)

运行该程序时,输出为:

  4 

要记住的事情

在Swift中使用下标语法访问数组元素时,必须确保该值位于索引中,否则将导致运行时崩溃。 让我们在示例中看一下:

 let intArr = [21, 34, 54, 12] 
print(intArr[-1])

运行该程序时,输出为:

 致命错误:索引超出范围 

在上面的程序中,索引-1中没有值。 因此,当您尝试访问索引中的值时,将发生运行时崩溃。

为防止这种情况,请首先找到要删除的元素的索引。 然后删除索引处的元素,如下所示:

 var intArr = [21, 34, 54, 12] 
if let index = intArr.index(of: 34) {
print("found index")
let val = intArr.remove(at: index)
print(val)
}

运行该程序时,输出为:

 找到索引 
34