数组在所有的编程语言中都是一个常用的类型,它的应用非常广泛。不仅在Objc中数组是常用的类型,在Swift中也是如此。下面我们来了解一下swift中的数组。在文中我们将会对Swift中数组的创建、添加、访问、遍历以及合并进行简单的了解。
要知道的是,在Objc中数组是有NSArray与NSMutableArray之分,但是在Swift中却没有这样子分,Swift中是通过let 和 var来区分数组是否可变的。还要注意的是,在了解Swift的时候我们知道Swift是一种类型安全的语言,所以它的数组也是类型安全的,所以某个数据在被存入某个数组之前类型一定要明确。打个比方:如果我们创建了一个String类型的数组,那么这个数组就只能放String类型的数据。
创建数组
我们先通过创建一个存储int 类型的数组作为例子:
上面是创建一个int 数组的不同方式。
在Swift中还有两种初始化数组的方法,这两种方法中数组所有的数据都是被默认的:
1)var 数组名 = [SomeType](count: NumbeOfElements, repeatedValue: InitialValue)
2)var 数组名 = Array(count: NumbeOfElements, repeatedValue: InitialValue) //这个方法具有推断功能,这里不做详细解释。
用法实例
var a = [Int](count: 3, repeatedValue: 0) //这个实例中创建了一个类型为int ,大小为3,初始值为0的数组
数组的数量
在数组中有一个只读的属性count,这个属性可以用于获取数组中的数据项的数量。下面看实例:
a.count //虽然很短但是这样就可以得到数组中数据项的数量
而在得到了数组中数据项的数量之后可以用iSEMpty 来检查count 是否为0.
而当你觉得数组的长度不够的时候还可以通过append来添加,使用方法如下:
a.append(6) //数组会在后面增加一个6 [2, 3, 4, 5, 6]
除了以上的方法添加还有可以使用 append() 方法或者赋值运算符 += 在数组末尾添加元素,如下:
a += [6, 7] // 那么会在数组后面添加 [2, 3, 4, 5, 6, 7]
除了可以在数组尾部添加新的元素,还有一种方法可以在具体的索引值之前添加新项,这个方法是insert(atIndex),如下:
a.insert(7, atIndex: 0) //这样就可以在数组的最前面添加7
访问数组
我们可以根据数组的索引来对数组的元素进行访问,语法如下:
var someVar = 数组名[index]
index 索引从 0 开始,及索引 0 对应第一个元素,索引 1 对应第二个元素,以此类推。注意,不管是Objc还是Swift,数组的索引都是从0开始的。
如果你想修改数组中的某一项的时候也可以通过索引进行改变:
a[0] = 8 //用回上文中的数组,数组a 中已经有值[2, 3, 4, 5, 6, 7]
数组会变为: [8, 3, 4, 5, 6, 7]
还有一种方法可以批量的修改数组中的值,如下:
a[1...3] = [9,10,11]
此时数组值就是:[8, 9, 10, 11, 6, 7]
注意,如果你要在数组的尾部进行添加新项,不能使用下标的方法来添加新项,因为这样会导致数组越界,引发不必要的错误。
数组的遍历
我们可以使用for - in 循环来遍历所以数组中的数据项,如下:
打印结果是:a b c d
但是如果我们同时需要每个数据项的值和索引值的话,可以使用String中的enumerate()方法,如下:var a = [String]()
输出的结果是:
合并数组
我们可以使用加法操作符(+)来合并两种已存在的相同类型数组。新数组的数据类型会从两个数组的数据类型中推断出来:
结果:2 2 1 1 1
文中对Swift中数组的最基本的方法进行了了解,这些方法都是直接套用的,并没有什么技巧可言。要注意的是,不了解Swift的朋友可能会看到代码后面没有分号,这在Swift中是正常的。在Swift中支持不用分号,但是在同一行编写两条语句就要使用分号。希望本文能对有需要的朋友有所帮助。