现在的位置: 首页 > 综合 > 正文

【Swift初见】Swift数组

2018年04月22日 ⁄ 综合 ⁄ 共 1545字 ⁄ 字号 评论关闭

在Objective-C中数组是常用的数据类型,在Swift中同样如此,在OC中有NSArray与NSMutableArray之分,但是在Swift中只有通过let和var来区分数组是否可变,Swift中的数组是类型安全的,所以在某个数据被存入到某个数组之前类型必须明确,假如我们创建了一个String类型的数组,那么该数组中就不能添加非String的数据类型,这是Swift与OC的一个很重要的区别。

数组的构造
我们以创建一个数组并存储Int类型的数组为例:

var array = [2, 3, 4, 5]
var array1: Array = [2, 3, 4, 5]
var array2: Array<Int> = [2, 3, 4, 5]
var array3: [Int] = [2, 3, 4, 5]

数组的数量:数组有一个只读属性 count来获取数组中的数据项数量。

array.count

检查数组是否为空可以用isEmpty来检查count是否为0

if array.isEmpty {
    println("array is Empty")
}else{
    println("array is not Empty")
}

当要在数组后面添加新的数据项时可以使用append方法来添加:

array .append(6)

此时数组中就有5个值了,
当数组的数据类型为字符串时,也可以使用加法赋值运算符(+=)直接在数组的后面添加新的数据项;
加法运算符也可以直接添加拥有相同类型的数组:

array += [7,8]

获取数组中数据项的时候,可以用索引来获取值:

var intV = array[0]

注:不管是OC还是Swift,数组的索引都是从0开始。

修改数组中的某一项时,也可以通过索引来改变:

array[0] = 9

此时数组就为:[9, 3, 4, 5, 6, 7, 8]
swift中也可以通过下标一次性改变多个数据值:

array[1...3] = [10,11,12]

此时数组值就是:[9, 10, 11, 12, 6, 7, 8]
在数组尾部添加新项时,不能使用下标来添加新项,此时数组越界,会引发一个运行期错误。

在某个具体索引值之前添加数据项,调用数组的insert(atIndex)来添加:

array.insert(13, atIndex: 0)

此时的数组值为:[13, 9, 10, 11, 12, 6, 7, 8]

同样的,移除数组的某一项时用removeAtIndex 方法;
移除最后一项的时候用removeLast

数组遍历
普遍的我们使用for-in循环来遍历数组中的所有数据项

for i in array {
    println(i)
}

swift提供一个enumerate函数来遍历数组,会同时返回数据项和索引值:

for (index, value) in enumerate(array){
    println("index : \(index) value: \(value)")
}

此时打印的值为:
index : 0 value: 13
index : 1 value: 9
index : 2 value: 10
index : 3 value: 11
index : 4 value: 12
index : 5 value: 6
index : 6 value: 7
index : 7 value: 8

如果我们需要创建一个数组,该数组有特定的大小并且所有的数据都是被默认的,此时swift提供了一个数组构造函数:

var newArray = [String](count: 4, repeatedValue: "test")

当然,swift具有类型推断功能,我们也可以如下定义:

var newArray2 = Array(count: 3, repeatedValue: "today")

我们知道,两种数据项类型相同的数组我们可以通过(+)来组合到一起形成一个新的数组:

var newArray3 = newArray + newArray2

欢迎大家共同学习指导。

抱歉!评论已关闭.