swift_007(Swift的Array 数组)

本文介绍了Swift中数组的基本概念,包括如何定义数组、初始化不同类型的数组、使用泛型创建数组以及常见的数组操作方法。通过实例展示了Swift数组与Objective-C中NSArray的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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)")

}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值