swift 数组

swift的数组是存放数据,相对object-c而言,swift更简单,对数组的元素的属性更加弱化,不需要强制数组元素是对象

数组的定义

//定义不可变数组
let arrt = ["a","b",1,[2,"l"]]
//定义可变数组
var arr = ["a","b",1,[2,"l"]]

数组的长度

//数组的长度 用 count
var arr = ["a","b",1,[2,"l"]]
let length = arr.count
print("length = \(length)")
//打印结果
 length = 4

创建空数组

//创建空数组 -- 直接定义
var arr1 = []
//规定数组元素的的类型,与swift1 的写法有所不同  这块需注意
var arr2 = [String]()

创建一个给定的大小,并用初始值的数组

var arr = [String](count: 4, repeatedValue: "s")

print("arr = \(arr)")

//打印结果为:
arr = ["s", "s", "s", "s"]
//创建一个有四个元素的数组,并指定四个值的数组:   
var arr:[Int] = [1, 2, 3,4]

print("arr = \(arr)")
//打印结果为:
arr = [1, 2, 3, 4]
** 注意:
当赋值与规定的类型不符时程序就会报错

数组的取值

//直接通过下标取值  这和 oc一样
var arr:[Int] = [1, 2, 3,4]
var someObj = arr[1]
print("someObj = \(someObj)")
//打印结果为:
someObj = 2

数组添加元素

//一种是使用 append() 方法  一种是直接赋值(+=)
var arr = [String]()

arr.append("a")
arr.append("b")
arr += ["cde"]


print( "arr ==  \(arr)" )
print( "arr 第一个元素 ==  \(arr[0])" )
print( "arr 第二个元素 ==  \(arr[1])" )
print( "arr 第三个元素 ==  \(arr[2])" )

//打印结果是:
arr ==  ["a", "b", "cde"]
arr 第一个元素 ==  a
arr 第二个元素 ==  b
arr 第三个元素 ==  cde

数组元素的修改

//通过索引修改数组的值:

var arr = [1,2,"s","c"]

arr[1] = "g"

print( "arr 第二个元素 ==  \(arr)" )

//打印结果是:
arr 第二个元素 ==  [1, g, s, c]

数组的遍历

//使用 for-in

var arr = [String]()

arr.append("one")
arr.append("two")
arr += ["three"]

for element in arr {
    print(element)
}

//运行结果
one
two
three

//使用 EnumerateSequence() 函数:
for (index, element) in EnumerateSequence(arr) {
    print("arr[\(index)] = \(element)")
}
//运行结果
arr[0] = one
arr[1] = two
arr[2] = three

//swift3.0之后 用EnumerateSequence替代了enumerate

//数组   for in
var arr = [String]()
for index in 0...5{
    arr.append("\(index)")
}
print("arr = \(arr)")
//打印结果
arr = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]


//数组的遍历 while
var i = 0
while i < arr.count{
    print(arr[i])
    i += 1
}
//打印结果
0
1
2
3
4
5
注意 :i++ 在swift3 之后 更推荐使用  i += 1

数组的拼接

//两个类型相同的数组可以相加

var arr1 = [Int](count:3, repeatedValue: 2)
var arr2 = [Int](count:3, repeatedValue: 1)

var arrAdd = arr1 + arr2

for item in arrAdd {
    print(item)
}
//打印结果为:
2
2
2
1
1
1

空属性

//空属性(isEmpty)判断一个数组是否为空:

var arr = [Int]()

if arr.isEmpty{
    print("arr 为空")
}else{
    print("arr 不为空")
}
//打印结果为:
arr 为空

** 注意:此处的数组不能是 var arr = [] 这样定义,这样isEmpty系统会报错