持续更新中~~
转载注明 http://blog.csdn.net/jiang314
前言
Swift语言提供Array、Set和Dictionary三种基本的集合类型用来存储集合数据。数组是有序的数据集;集合是无序无重复的数据集;而字典是无序的键值对数组集。
Swift的Array、Set和Dictionary类型被实现为泛型集合。因此,它所存储的元素的类型必须是一致的,同样,我们取出来的数据类型也是明确的。
集合的可变性
如果创建一个Arrays、Sets或Dictionaries并且把它分配成一个变量,这个集合将会是可变的。这意味着我们可以在创建之后添加更多或移除已存在的数据项,或者改变集合中的数据项。
如果我们把Arrays、Sets或Dictionaries分配成常量,那么它就是不可变的,它的大小和内容都不能被改变。
若我们确定集合不需要改变,那么我们应该使用不可变集合,也就是使用let
声明,那样编译器会为我们优化。
// 在swift中要让Array、Set、Dictionary类型的变量是可变的,用var声明就可以了。
// 如果不希望可变,用let声明即可。
let immutableArrray = [Int]()
// 提示:error: immutable value of type '[Int]' only has mutating
// members named 'append'
//immutableArrray.append(12)
// OK
var mutableArray = [Int]()
mutableArray.append(12)
我的博客:http://blog.csdn.net/jiang314
数组
数组使用有序列表存储同一类型的多个值,相同的值可以多次出现在一个数组的不同位置中。我们需要明确,数组是有序的,元素类型是相同的。
Swift中的Array与Foundation中的NSArray是桥接的,可以相互转换。
1、创建一个空数组
由于Swift中的数组是泛型,因此必须指定元素的数据类型:
//1、创建空数组
//定义数组只能保存字符串
var array:[String]
//定义数组只能保存int
var arrint = [Int]()
//定义数组,使用结构体Array的构造写法
var anotherEmptyArray = Array<Int>()
2、创建带默认值的数组
Swift提供了如下方法,可以创建带有默认值的数组,这个构造方法是使用count个指定元素来初始化:
//2、创建带默认值得数组
// threeDoubles 是一种 [Double] 数组,等价于 [1.0, 1.0, 1.0]
var threeDoubles = [Double](count: 3, repeatedValue:1.0)
3、数组相加来创建数组
两个数组能够通过加号+
来创建一个合并的数组,是因为苹果为我们提供了这样的方法:
//3、数组相加 来创建数组
//要求:遵守RRC协议 ; 两个集合的元素类型要求相同
//数组是遵守RRC协议的.
// anotherThreeDoubles 被推断为 [Double],等价于 [2.5, 2.5, 2.5]
var anotherThreeDoubles = Array(count: 3, repeatedValue: 2.5)
// sixDoubles 被推断为 [Double],等价于 [0.0, 0.0, 0.0, 2.5, 2.5, 2.5]
var sixDoubles = threeDoubles + anotherThreeDoubles
4、实例构造数组
我们可以使用字面量数组来进行数组构造,这是一种用一个或者多个数值构造数组的简单方法。字面量是一系列由逗号分割并由方括号包含的数值:
//4、创建实例数组
// shoppingList 已经被构造并且拥有两个初始项。
var shoppingList: [String] = ["Eggs", "Milk"]
// 由于类型是明确的,因此我们可以交由编译器来推断类型数组的类型:
var shoppingListt = ["Eggs", "Milk"]
5、访问和修改数组
常见的数组访问和修改操作有:
- 获取数组元素个数
- 判断数组是否为空
- 数组追加元素
- 数组在某个位置插入元素
- 数组在某个范围插入元素
5.1 数组元素个数
获取数组元素的个数,可通过count
属性获取:
print("The shopping list contains \(shoppingList.count) items.")
5.2 数组判断是否为空
判断数组是否为空,可以通过isEmpty
属性判断,也可以通过count
判断:
if shoppingList.isEmpty {
print("The shopping list is empty.")
} else {
print("The shopping list is not empty.")
}
// 或者通过count属性
if shoppingList.count == 0 {