首先数组的定义:以有序的方式存储相同类型的值
(1)数组的简写(shorthand)语法
你可以通过Array<Element>,在这里,Element时数组存储元素的值的类型,也可以通过中括号来写[Element]
(2)创建一个空数组
var emptyArr = [Int]()(这里使用初始化方法创建一个Int型的空数组)
emptyArr.append(3)
emptyArr = [] (这里是用字面语句创建空数组)
note:emptyArr is now an empty array,but is still an type of [Int]
另外,就是我直接用var emptyArr = []创建一个空数组会产生一个错误,报了这是一个不可变数组,大家可以试试
(3)创建一个带有默认值的数组
swift提供了一种初始化一个数组,并且这个数组带有相同的默认值
var defaultArr = [Double](count: 3,repeatedValue: 0.0)(值类型是double型的)
println(defaultArr)
//the println is [0.0,0.0,0.0]
(4)通过add两个数组创建一个新的数组
通过(+)号操作将两个已经存在的相同类型的数组创建一个新的数组
var anotherArr = [Double](count: 3,repeatedValue: 2.5)
var newArr = defaultArr + anotherArr
println(newArr)
//the result is [0.0,2.5,2.5]
(5)用字面量创建一个数组
中括号里面放一系列的值,以逗号分隔
var shopping:[String] = ["Eggs","Milk"]
这个声明了一个只存储字符型的数组,由swift的类型推断,我们可以不用写明类型用字面量语法初始化数组存放相同类型的值时,因此,上面的例子可以更加简单点写
var shopping: = ["Eggs","Milk"]
(6)访问和改变数组
我们学会了创建一个数组,那么接下来就要想怎么访问一个数组,又怎么改变一个数组呢?
我们可以通过数组的只读属性(.count)知道数组的元素个数
println("The shopping list contains \(shoppingList.count) items") (The shopping list contains 2 items)
我们可以通过数组的Boolen属性(.isEmpty)检查数组的个数和0是否相等
if shoppingList.isEmpty{
println("The shopping list is empty")
}else{
println("The shopping list isn't empty")
}
我们可以通过array's append(_:)方法在数组的最后面添加元素
shoppingList.append("Flour")
println(shoppingList) ([Eggs,Milk,Flour])
还有一种方法,我们也可以通过(+=)操作添加一个或多个元素
shoppingList += ["Baking Powder"]
shoppingList += ["Chocolate Spread","Cheese","Butter"]
println(shoppingList) ([Eggs,Flour,Baking Powder,Chocolate Spread,Cheese,Butter])
可以通过下标语法检索一个数组的值,在数组名后面加上中括号,在里面写上你想要的值所在的下标就可以取出对应的下标值了,和oc一样,第一个元素也是从0开始算起
var firstItem = shoppingList[0]
println(firstItem) (firstItem is equal to "Eggs")
你也可以通过下标语法改变对应索引处的值
shoppingList[0] = "Six Eggs"
println(shoppingList) ([Six Eggs,Butter])和上面对比确实改变了第一个元素
在swift中可以通过下标语法改变一定范围的值,即使替代的值的长度和你替代的范围长度不同,如
shoppingList[4...6] = ["Bananas","Apples"]
println(shoppingList)
现在打印的结果是[Six Eggs,Bananas,Apples]也就是数组有6个元素
shoppingList[4...6] = ["Bananas","Apples","Bananas","Apples"]
现在数组有8个元素了
但是请注意你不能通过下标语法给数组添加元素
往数组中插入元素我们可以通过调用insert(_:atIndex:)方法
shoppingList.insert("Maple Syrup",atIndex: 0)
println(shoppingList) ([Maple Syrup,Six Eggs,Apples,Apples])
同样的道理,可以通过调用removeAtIndex(_:)方法移除元素。并且可以接收被移除的元素(假如你不需要,就不用接收,直接忽略就好了)
var removedItem = shoppingList.removeAtIndex(0)
println(shoppingList) ([Six Eggs,Apples])
调用removeRange移除一定范围内的数组
var removedRangeItem: () = shoppingList.removeRange(6...7)
println(shoppingList) ([Six Eggs,Apples])
调用removeLast()语法移除数组最后一个元素,而不是通过调用removeAtIndex(_:)方法,以免遍历数组一遍要
shoppingList.removeLast()
println(shoppingList)
数组的遍历
我们可以通过for-in循环遍历
println(shoppingList)
for item in shoppingList{
println(item)
(Six Eggs
Milk
Flour
Baking Powder
Bananas)
}
如果你需要每个元素的下标和对应的值,你需要用enumerate()方法来遍历数组,这样返回一个元组,包括元素的下标和对应的值
for (index,value) in enumerate(shoppingList){
println("Item\(index):\(value)")
}
Item0:Six Eggs
Item1:Milk
Item2:Flour
Item3:Baking Powder
Item4:Bananas
这是swift2.0之前的写法,2.0之后用的是
for (index,value) in shoppingList.enumerate(){
println("Item\(index):\(value)")
}
这个方法
借鉴:https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/CollectionTypes.html#//apple_ref/doc/uid/TP40014097-CH8-ID105