九、Swift3.0之数组的定义、遍历、增删改、容量以及合并
2017-02-23 本文已影响2519人
ZhengYaWei
数组的定义,包含混合数组
func demo() {
//自动推到的结果是[String],表示数组中存放都是[String],这一点和OC中的数组制定泛型类似
let array = ["张三","李四","王二"]
print(array)
//Swift中的基本数据类型不用包装,OC中需要用包装
//自动推到类型为[Int]
let array2 = [1,2,3,4,5]
print(array2)
//CG结构体
let p = CGPoint(x: 10, y: 300)
//自动推到类型为[CGPoint]
let array3 = [p]
print(array3)
//混合数组:开发中几乎不用
//如果数组中的类型不一致,自动推到结果为[NSObject]
//在Swift中还有一种类型[AnyObject]-->代表任意对象,比NSObject包含的范围更广。说明:在Swift中一个类可以没有任何父类,所以会出现AnyObject
//*** 在混合的数组中,CG结构体需要包装,如果不是混合类型数组就不用包装
let point = CGPoint(x: 10, y: 300)
let array4 = ["张三",1,NSValue(cgPoint:point)] as [Any]
print(array4)
}
数组的六种遍历方式,包含倒序遍历两种方式。
func demo() {
let array = ["张三","李四","王二"]
//1、按照下标遍历
for i in 0..<array.count {
print(array[i])
}
//2、按照元素遍历
for s in array{
print(s)
}
//3、enum block,同时遍历下标和元素
for e in array.enumerated() {
//这个e是一个元组,里面包含offset(下标) element(内容)
print("\(e.offset)\(e.element)")
}
//4、遍历下标和内容之二
for(n,s) in array.enumerated(){
//n是索引 s是n索引对应的元素,其中n和s可以随意写
print("\(n) \(s)")
}
//5、倒序遍历
for s in array.reversed(){
print(s)
}
//6、倒序索引和元素遍历
//这是正确的,下面的第二个是错误的。应该先枚举在倒序
for (n,s) in array.enumerated().reversed(){
print("\(n)\(s)")
}
//这是错误的
//for (n,s) in array.reversed().enumerated(){
// print("\(n)\(s)")
//}
}
数组的增删改操作。
func demo() {
var arr = ["张三","李四","王二"]
//增
arr.append("老王")
arr.insert("你好", at: 0)
print(arr)
//改
arr[0] = "小王"
print(arr)
//删
arr.remove(at: 4)
print(arr)
//删除全部,并且保存空间
arr.removeAll(keepingCapacity: true)
}
数组的容量。
func demo() {
//定义一个数组,制定类型存放[Int]的数组 但是没有初始化
var array: [Int]
//给数组初始化
array = [Int]()
//以上两句可以合并写成一句
var array2 = [Int]()
print("初始容量\(array2.capacity)")
for i in 0..<8{
array2.append(i)
//容量不够使用的时候,每次增加之前容量的一倍,这样可以避免每次增加数据时都开辟空间
print("\(array2)容量\(array2.capacity)")
}
}
数组的合并。
func demo() {
//常规数组合并
var arr = ["张三","李四","王二"]
let arr2 = ["小王","1"]
arr += arr2;
print(arr)
//注意:要合并的两个数组的类型必须要一致。如下是一种错误的写法:
// var arr3 = ["张三","李四","王二"]
// let arr4 = ["小王","1",100]
// arr3 += arr4;
// print(arr3)
//正确的写法如下
var arr3: [NSObject] = ["张三" as NSObject,"李四" as NSObject,"王二" as NSObject]
let arr4: [NSObject] = ["小王" as NSObject,"1" as NSObject,100 as NSObject]
arr3 += arr4;
print(arr3)
}