数组使用有序列表存储同一类型的多个值。相同的值可以多次出现在一个数组的不同位置中。
写 Swift 数组应该遵循像Array这样的形式,其中Element是这个数组中唯一允许存在的数据类型。我们也可以使用像[Element]这样的简单语法。尽管两种形式在功能上是一样的,但是推荐较短的那种
使用构造方法创建一个由特殊数据类型构成的空数组:
var intArray = [Int]()
//通过构造函数的类型, intArray的值类型被推断为[Int]
可以通过大括号将数组置空
//向数组中追加元素,此刻数组intArray中元素个数为0
intArray.append(100)
//此时数组intArray中元素个数为1
intArray = []
//此刻intArray中数组为空,但由于开始初始化数组intArray为[Int]型的,虽然现在数组为空,但其仍为[Int]型数组。
var threeInts = [Int](count: 5, repeatedValue: 100)
print("threeInts is \(threeInts)")
//output: [100, 100, 100, 100, 100]
var threeIntsTwo = [100, 100, 100, 100, 100, 100, 100, 100, 100, 100]
//Swift会根据数组中的元素自动推断出数组的值类型 , 强制在数组中添加不同类型的元素显然是不合法的
可以使用加法操作符(+)来组合两种已存在的相同类型的数组,所得出的新数组的数据类型会从两个相加的数组中推断出来。
var arrayOne = Array(count: 3, repeatedValue: 10)
var arrayTwo = Array(count: 4, repeatedValue: 9)
var arrayAdd = arrayOne + arrayTwo
// arrayAdd : [10, 10, 10, 9, 9, 9, 9] 数据类型为Int
// 如果将两个不同数据类型的数组相加 会报错
可以使用字面量进行数组构造,字面量是一系列由逗号分隔并由方括号包含的数值:
[value1, value2, value3, value4......]
创建一个goodList的并存储String的数组:
var goodList : [String] = ["car", "toy"]
//goodList已经被构造并且拥有两个初始项
goodList变量被声明为“字符串值类型的数组”,记作[String].因为这个数组被规定只有String一种数据结构,所以其中只能存储String类型。由Swift的推断机制,当用”car”和”toy”来初始化数组时,数组就被自动匹配成为字符串值类型的数组。所以,goodList数组也可以写成下面的形式,其结果和上面的一样:
var goodList = ["car", "toy"]
因为所有字面量中的值都是相同的类型,Swift可以推断出[String]是goodList中变量的正确类型。
var count = goodList.count
if goodList.isEmpty{
print("The goodList is empty.")
}else{
print("The goodList is not empty.")
}
goodList.append("pen")
goodList += ["ink", "ice"]
var firstItem = goodList[0]
goodList[2] = "pencil"
//将goodList数组第一和第二个元素替换成“apple” 两个换成一个 后面的一次向前移动
goodList[1...2] = ["apple"];
//Tips:不可在数组的末尾执行此项操作
goodList.insert("orange", atIndex: 0)
let temp = goodList.removeAtIndex(0)
//直接移除最后一项
let temp1 = goodList.removeLast()
goodList.sort { (let str1, let str2) -> Bool in
return str1 < str2
}
goodList.sortInPlace { (let str1, let str2) -> Bool in
return str1 < str2
}
for item in goodList{
print(item)
}
for (index, value) in goodList.enumerate(){
print("item --> \(item) , value --> \(value)")
}