Swift-数组

来源:互联网 发布:正交矩阵一定是方阵吗 编辑:程序博客网 时间:2024/05/29 09:22

数组

数组使用有序列表存储同一类型的多个值。相同的值可以多次出现在一个数组的不同位置中。

  • Swift中的Array类型被桥接到Foundation中的NSArray类。

数组的简单语法

写 Swift 数组应该遵循像Array这样的形式,其中Element是这个数组中唯一允许存在的数据类型。我们也可以使用像[Element]这样的简单语法。尽管两种形式在功能上是一样的,但是推荐较短的那种

创建一个空数组

使用构造方法创建一个由特殊数据类型构成的空数组:

var intArray = [Int]()//通过构造函数的类型, intArray的值类型被推断为[Int]

可以通过大括号将数组置空

//向数组中追加元素,此刻数组intArray中元素个数为0intArray.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-in循环来遍历所有数组中的数据项
for item in goodList{    print(item)}
  • 如果同时需要使用每个数据项和索引值,可以使用enumerate()方法来进行数组遍历。enumerate()返回一个由每一个数据项索引值和数据值组成的元组。可以把这个元组分解成为临时常量或者变量进行遍历。
for (index, value) in goodList.enumerate(){    print("item --> \(item) , value --> \(value)")}
0 0
原创粉丝点击