1. 在 Swift 中,如果你用let将数组作为常量来定义,他们就是不可变的,如果用 var 定义为变量他们就是可变的。
作为对比,Foundation 框架中的 NSArray 默认是不可变类型,如果你想在数组创建之后添加、删除或者修改数据,你必须使用可变类 NSMuatbleArray。
2. NSArray 是异质的,那也就意味着他可以包含不同类型的 Cocoa 对象。 Swift 数组是同质的,意味着每一个 Swift 数组都只包含一种类型的对象。
不过,你仍然可以通过将一个类型定义为 AnyObject 类型,使定义的 Swift 数组能够存储可变的 Cocoa 对象类型。
/********************************数 组************************************/
//------------------------------------------------------------------------------
// 1. 数组定义
// 初始化一个空数组
var someArray = [String]()
print("数组---\(someArray)")
// 1> 使用[]可以快速定义数组,每一个数组元素使用 , 分隔
// 2> 数组中的数据元素可以是不同类型
var myArray = ["string1","string2",1,1.2,true,1] as [Any]
//------------------------------------------------------------------------------
// 2. 如果要让数组中存放的数据是同一种数据类型,可以在定义数组时指定其中的数据类型,代码如下:
// 1> array1是一个仅允许存放String的数组
var stringArray:[String]
stringArray = ["str1","str2"]
// 2> array2是一个仅允许存放Int的数组
var intArray:[Int]
intArray = [1,2,3,4,5]
for item in intArray {
print("item---\(item)")
}
print("item---\(intArray[0])")
// 3. 使用泛型创建数组
// 使用泛型定义数组时 <> 中的类型可以指定数组中存放的数据类型
//
// 1> array3是一个仅允许存放AnyObject(Int等)的数组,()会实例化数组
var idArray = Array<Any>()
idArray = ["stringObject",5,6.6]
print(idArray)
// 2> 在实例化数组时,可以使用数组的构造方法,指定数组初始成员
// 实例化一个数组,包含三个 20 的整数
var triArray = Array<Int>(repeating: 20,count:3)
var squaerArray = Array<String>(repeating: "方形",count:4)
//------------------------------------------------------------------------------
// 4. 数组常见操作
// 1> 追加元素
triArray.append(21)
// 2> 插入元素
triArray.insert(19, at: 0)
triArray.insert(10, at: 3)
// 3> 删除指定位置元素
triArray.remove(at: 2)
triArray
// 使用变量记录triArray数组,本质上做了一次内存拷贝,后续对数组的修改,不会影响该变量数组中的内容
var copyTriArray = triArray
var aaa = copyTriArray[3]
var bbb = 100
var c = bbb+aaa
// 4> 删除末尾元素
triArray.removeLast()
triArray
copyTriArray
// 5> 删除所有元素,但保留存储空间
//triArray.removeAll(keepCapacity: true)
// 显示resultNums中的内容,数组中的内容并没有受到影响
copyTriArray
triArray
// 6> 数组合并
// 保存相同数据类型的数组,可以使用 + 直接合并
var mergeArray = triArray + copyTriArray
// 7>如果我们同时需要每个数据项的值和索引值,可以使用 String 的 enumerate() 方法来进行数组遍历。实例如下:
var someStrs = [String]()
someStrs.append("Apple")
someStrs.append("Amazon")
someStrs.append("FaceBook")
someStrs += ["Google"]
for (index, item) in someStrs.enumerated() {
print("在 index = \(index) 位置上的值为 \(item)")
}