swift 学习记录(集合---数组)

来源:互联网 发布:海康网络键盘 编辑:程序博客网 时间:2024/06/08 12:21

swift 提供了两种集合类型 : 数组 和 字典 ,用于存储值的集合。

本章内容只记录 数组,字典将在下一章中记录

数组 

有序列表,存储多个可重复的相同数据类型的数据。

数组存储的数据值的类型必须是明确的,通过显式类型注释,或通过类型推断来保证,而且没必要非是 class 类型。例如: 如果创建一个 Int 类型的数组,就不能向其中加入不是Int类型的任何数据。

简单语法

Swift 数组语法形式:Array<SomeType>,或者简写为 SomeType[] 。其中 SomeType 表示数组存储的数据类型。 两种形式在功能上是一样的,但是推荐使用 SomeType[] 种写法。

var shoppingList: [String] = ["Eggs", "Milk"]var numLis:Array<Int> = [10,30,100]

取值

直接通过元素下标取值,元素的下标从 0 开始

var shoppingList: [String] = ["Eggs","Bananas","Apples"]var firstItem = shoppingList[0]print("fistItem is \(firstItem)")//fistItem is Eggs

count属性

使用count 属性来获取 数组中元素的数量

var count = shoppingList.countprint("count is \(count)")//count is 2

isEmpty属性

使用 isEmpty 属性来判断数组是否为空

var shoppingList: [String] = [ ]if shoppingList.isEmpty{   print("shoppingList is empty")}else{  print("shoppingList is not empty")}//shoppingList is empty
追加元素

1,使用 append 在数组末尾追加元素

var shoppingList: [String] = ["Eggs","Bananas","Apples"]shoppingList.append("Flour")
print("shoppingList is \(shoppingList)")//shoppingList is ["Eggs", "Bananas", "Apples", "Flour"]
2,使用加法赋值运算符(+=) 在数组末尾追加元素

var shoppingList: [String] = ["Eggs","Bananas","Apples"]shoppingList.append("Flour")shoppingList += ["Beer"]print("shoppingList is \(shoppingList)")//shoppingList is ["Eggs", "Bananas", "Apples", "Flour", "Beer"]
这里的 += 操作 ,在教程中看到的是 后面直接是个 字符串,但在代码中出现编译错误。于是,我将字符串改为数组,得到了正确的结果。这不知道是不是 swift2.0 之后改变了的原因。

3,使用 数组的 insert (atIndex:) 方法在 atIndex 之前添加元素

var shoppingList: [String] = ["Eggs", "Bananas", "Apples", "Flour", "Beer"]shoppingList.insert("redwine", atIndex: 2)print("shoppingList is \(shoppingList)")//shoppingList is ["Eggs", "Bananas", "redwine", "Apples", "Flour", "Beer"]

元素修改

1,通过下标修改数组元素

var shoppingList: [String] = ["Eggs", "Bananas", "Apples", "Flour", "Beer"]shoppingList[0] = "rice" //将第一个元素修改为riceprint("shoppingList is \(shoppingList)")//shoppingList is ["rice", "Bananas", "Apples", "Flour", "Beer"]

2,通过下标区间,批量修改数组中的元素

var shoppingList: [String] = ["Eggs", "Bananas", "Apples", "Flour", "Beer"]shoppingList[0...3] = ["rice","noodle","meat","milk"] //将数组中的第1,2,3,4个元素改变print("shoppingList is \(shoppingList)")//shoppingList is ["rice", "noodle", "meat", "milk", "Beer"]

元素删除

1,使用 removeAtIndex 方法来移除数组中的某一项。这个方法把数组在索引位置存储的元素移除,并返回这个被移除的元素(如果不需要可以无视它)

var shoppingList: [String] = ["Eggs", "Bananas", "Apples", "Flour", "Beer"]var mapleSyrup = shoppingList.removeAtIndex(3) //将数组中的第 4 个元素移除print("shoppingList is \(shoppingList) , \(mapleSyrup) been removed")//shoppingList is ["Eggs", "Bananas", "Apples", "Beer"] , Flour been removed

2,使用 removeFirst()(移除第一个元素) 、removeLast()(移除最后一个元素)

var shoppingList: [String] = ["Eggs", "Bananas", "Apples", "Flour", "Beer"]var first = shoppingList.removeFirst() //移除第一个元素var last = shoppingList.removeLast()  //移除最后一个元素print("shoppingList is \(shoppingList) , \(first) and \(last) been removed")//shoppingList is ["Bananas", "Apples", "Flour"] , Eggs and Beer been <span style="font-family: STHeiti;">removed</span>
3, 使用 removeAll(),移除所有元素

var shoppingList: [String] = ["Eggs", "Bananas", "Apples", "Flour", "Beer"]shoppingList.removeAll()print("shoppingList is \(shoppingList) ")//shoppingList is []
 

数组的遍历

1,使用 for-in 遍历数组中的所有元素

var shoppingList: [String] = ["Eggs", "Bananas", "Apples", "Flour", "Beer"]for item in shoppingList{    print(item)}//Eggs//Bananas//Apples//Flour//Beer
2,如果同时需要每个元素的值和索引值,可以使用函enumerate()函数 来进行数组遍历。enumerate()返回一个由元素索引值和数据值组成的键值对。我们可以把这个键值对分解成临时常量或者变量来进行遍历:

var shoppingList: [String] = ["Eggs", "Bananas", "Apples", "Flour", "Beer"]for (index, value) in shoppingList.enumerate() {    print("index is \(index) and value is \(value)")}//index is 0 and value is Eggs//index is 1 and value is Bananas//index is 2 and value is Apples//index is 3 and value is Flour//index is 4 and value is Beer

0 0
原创粉丝点击