Swift-数组(Arrays)

本文属个人笔记,不做详解,仅供参考
参考文章:http://www.swift51.com/swift.html

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

注意: Swift 的Array类型被桥接到Foundation中的NSArray类。 更多关于在Foundation和Cocoa中使用Array的信息,参见 Using Swift with Cocoa and Obejective-C 一书。

数组的简单语法

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

数组的创建

我们可以使用构造语法来创建一个由特定数据类型构成的空数组:

var someInts = [Int]()
print("someInts is of type [Int] with \(someInts.count) items.")
// 打印 "someInts is of type [Int] with 0 items."

注意,通过构造函数的类型,someInts的值类型被推断为[Int]。

或者,如果代码上下文中已经提供了类型信息,例如一个函数参数或者一个已经定义好类型的常量或者变量,我们可以使用空数组语句创建一个空数组,它的写法很简单:[](一对空方括号):

someInts.append(3)
// someInts 现在包含一个 Int 值
someInts = []
// someInts 现在是空数组,但是仍然是 [Int] 类型的。

访问和修改数组

我们可以通过数组的方法和属性来访问和修改数组,或者使用下标语法。
可以使用数组的只读属性count来获取数组中的数据项数量:

print("The shopping list contains \(shoppingList.count) items.")
// 输出 "The shopping list contains 2 items."(这个数组有2个项)

使用布尔值属性isEmpty作为检查count属性的值是否为 0 的捷径:

if shoppingList.isEmpty { 
print("The shopping list is empty.")
} else { 
print("The shopping list is not empty.")
}
// 打印 "The shopping list is not empty."(shoppinglist 不是空的)

也可以使用append(_:)方法在数组后面添加新的数据项:

shoppingList.append("Flour")
// shoppingList 现在有3个数据项,有人在摊煎饼

除此之外,使用加法赋值运算符(+=)也可以直接在数组后面添加一个或多个拥有相同类型的数据项:

shoppingList += ["Baking Powder"]
// shoppingList 现在有四项了
shoppingList += ["Chocolate Spread", "Cheese", "Butter"]
// shoppingList 现在有七项了

可以直接使用下标语法来获取数组中的数据项,把我们需要的数据项的索引值放在直接放在数组名称的方括号中:

var firstItem = shoppingList[0]
// 第一项是 "Eggs"

数组的遍历

我们可以使用for-in循环来遍历所有数组中的数据项:

for item in shoppingList { 
print(item)
}
// Six eggs
// Milk
// Flour
// Baking Powder
// Bananas

如果我们同时需要每个数据项的值和索引值,可以使用 enumerate()方法来进行数组遍历。 enumerate()返回一个由每一个数据项索引值和数据值组成的元组。我们可以把这个元组分解成临时常量或者变量来进行遍历:

for (index, value) in shoppingList.enumerate() { 
print("Item \(String(index + 1)): \(value)")
}
// Item 1: Six eggs
// Item 2: Milk
// Item 3: Flour
// Item 4: Baking Powder
// Item 5: Bananas

数组的应用

数组去重

var array = [String]()
let result = Array(Set(array))

获取指定元素在数组中的位置

let index = array.indexOf(“XX”)

删除指定位置元素

array.removeAtIndex(index)

创建重复数组

array = Array.init(count:重复次数, repeatedValue:值)

数组与字符串互转:
String->Array

let str = “sh,dfbg,e,f,v,vfgrt”
let strArray =str.componentsSeparatedByString(“,”)

Array->String

let strArray = [“a”,”b”,”c”]
let str = strArray.joinWithSeparator(“,”)

推荐阅读更多精彩内容