Swift-数组
2016-07-31 01:11
330 查看
一. 数组定义(比较 OC 与 Swift 的数组)
1.1. 有值数组//oc 有值数组 NSArray *arr0 = @[@1, @2, @3]; NSArray *arr1 = [NSArray arrayWithObjects:@1, @2, @3, nil]; NSLog(@"%@", arr1); /*输出结果: 2016-01-06 01:04:49.180 test[11687:2096671] ( 1, 2, 3 )*/
//swift有值数组 var arr0 = [1, 2, 3]var arr1: Array = [1, 2, 3]var arr2: Array<Int> = [1, 2, 3] var arr3: [Int] = [1, 2, 3] print(arr3) //输出结果: [1, 2, 3]
1.2. 空数组
//oc空数组 NSArray *arr = @[]; NSArray *arr1 = [NSArray array]; NSLog(@"%@", arr1); /*输出结果: 2016-01-06 01:06:04.132 test[11703:2106199] ( )*/
//swift空数组 var arr5 = []var arr6 = [Int]()var arr7 = Array<Int>() print(arr7) //输出结果: []
1.3. 可变与不可变数组
// oc NSArray //不可变数组: NSMutableArray//可变数组:
// swift //可变数组: var arr8 = [] //不可变数组: let arr9 = []
1.4. 元素类型
//OC: NSArray *arr = @[@1, @"cdh", @130]; NSLog(@"%@", arr); /*输出结果: 2016-01-06 01:13:07.987 test[11891:2163044] ( 1, cdh, 130 )*/
//swift: (常用写法) var arr = [1, "CDH", 130] // 编译器自行推导出 arr : [NSObject] print(arr) //输出结果: [1, CDH, 130]
//如果想明确表示数组中存放的是不同类型的数据 //可以使用Any 或者 NSObject 关键字, 表示数组中可以存放不同类型的数据 var arr10:Array<Any> = [1, "CDH", 130] // 存放的字符串是带有双引号的 print(arr10) //输出结果: [1, "CDH", 130] // 注意 打印出来的字符串是带有双引号的 var arr12 : [NSObject] = [2, "cdh", 18] print(arr12) //输出结果:[2, cdh, 18]
//指定数组当中只能存放Int型,如果存放其它类型会直接报错 var arr14:Array<Int> = [1, 10, 130] print(arr14) //输出结果: [1, 10, 130] var arr15:[Int] = [1,2,3] print(arr15) //输出结果: [1, 2, 3]
二. 数组操作
2.1. 获取长度//OC: NSArray *arr = @[@1, @2, @3]; NSLog(@"%tu", arr.count); //输出结果: 2016-01-06 01:19:54.874 test[12086:2209180] 3
//swift: var arr = [1, 2, 3] print(arr.count) //输出结果:3
2.2. 判断是否为空
//OC: NSArray *arr = @[]; NSLog(@"result = %d", arr.count != 0); //输出结果: 2016-01-06 01:25:14.252 OCTest[12249:2255010] result = 0
var arr1 = [1, 2, 3] print(arr1.isEmpty) //输出结果: false
注意: 只有该数组有指定的存储类型,或者数组中有元素才能使用 isEmpty 这个方法, 不然会报错, 比如:
var arr = [] // 这是个空的数组, 而且有没有指定类型, 只表示为 Array 类型 print(arr.isEmpty) // 是会报错的
2.3. 检索
//OC: NSArray *arr = @[@1, @2, @3]; NSLog(@"%@", arr[0]); //输出结果: 2016-01-06 01:26:46.816 OCTest[12275:2269853] 1
//swift: var arr2 = [1, 2, 3] print(arr2[0]) //输出结果: 1
2.4. 追加
//OC: NSMutableArray *arr = [NSMutableArray arrayWithObjects:@1, @2, @3, nil]; [arr addObject:@4]; NSLog(@"%@", arr); /*输出结果: 2016-01-06 01:28:47.111 OCTest[12297:2286198] ( 1, 2, 3, 4 )*/
//swift: var arr3 = [1, 2, 3] arr3.append(4); print(arr3) //输出结果: [1, 2, 3, 4] var arr4 = [1, 2, 3] arr4 += [4] print(arr4) //输出结果: [1, 2, 3, 4] var arr5 = [1, 2, 3] arr5 += [4] arr5 += [5,6,7] //输出结果: [1, 2, 3, 4, 5, 6, 7] var arr6 = [1, 2, 3] arr6 += [4] arr6 += [5,6,7] arr6 += arr6[0...3] print(arr6) //输出结果: [1, 2, 3, 4, 5, 6, 7, 1, 2, 3, 4]
2.5. 插入
//OC: NSMutableArray *arr = [NSMutableArray arrayWithObjects:@1, @2, @3, nil]; [arr insertObject:@4 atIndex:0]; NSLog(@"%@", arr); /*输出结果: 2016-01-06 01:36:10.450 OCTest[12374:2339079] ( 4, 1, 2, 3 )*/
//swift: var arr7 = [1, 2, 3] arr7.insert(4, atIndex: 0); print(arr7) //输出结果: [4, 1, 2, 3]
2.6. 更新
//OC: NSMutableArray *arr = [NSMutableArray arrayWithObjects:@1, @2, @3, nil]; arr[0] = @8; NSLog(@"%@", arr); /*输出结果: 2016-01-06 01:37:28.482 OCTest[12397:2350177] ( 8, 2, 3 )*/
//swift: var arr8 = [1, 2, 3] arr8[0] = 8 print(arr8) //输出结果: [8, 2, 3]
2.7. 删除
//OC: NSMutableArray *arr1 = [NSMutableArray arrayWithObjects:@1, @2, @3, nil]; [arr1 removeObject:@1]; NSLog(@"%@", arr1); NSMutableArray *arr2 = [NSMutableArray arrayWithObjects:@1, @2, @3, nil]; [arr2 removeLastObject]; NSLog(@"%@", arr2); NSMutableArray *arr3 = [NSMutableArray arrayWithObjects:@1, @2, @3, nil]; [arr3 removeAllObjects]; NSLog(@"%@", arr3); /*输出结果: 2016-01-06 01:39:49.831 OCTest[12418:2370779] ( 2, 3 ) 2016-01-06 01:39:49.832 OCTest[12418:2370779] ( 1, 2 ) 2016-01-06 01:39:49.832 OCTest[12418:2370779] ( )*/
//swift: var arr9 = [1, 2, 3] arr9.removeAtIndex(0) print(arr9) // 输出结果:[2, 3] var arr10 = [1, 2, 3] arr10.removeLast() print(arr10) // 输出结果:[1, 2] var arr11 = [1, 2, 3] //是否保持容量, 如果为true, 即便删除了容量依然存在, 容量是2的倍数 arr11.removeAll(keepCapacity: false) print(arr11) print(arr11.capacity) //输出结果: //[] //0
2.8. Range
//OC: NSMutableArray *arr = [NSMutableArray arrayWithObjects:@1, @2, @3, nil]; [arr removeObjectsInRange:NSMakeRange(0, 2)]; NSLog(@"%@", arr); /*输出结果: 2016-01-06 01:43:17.863 OCTest[12441:2396986] ( 3 )*/
//swift: var arr12 = [1, 2, 3] arr12.removeRange(Range(start: 1, end: 2))// 这里3.0 之后就不能用这个 Range(start: , end: )方法了 而是推荐使用 range = ..< 这样的取范围 print(arr12) //输出结果: [1, 3] var arr13 = [1, 2, 3] arr13.removeRange(0...0) print(arr13) //输出结果: [2, 3] var range14 = 0...5 print(range14) //输出结果: 0..<6
三. 数组的其它操作
3.1. 数组的批量操作//OC: NSMutableArray *arr = [NSMutableArray arrayWithObjects:@1, @2, @3, nil]; NSRange range = NSMakeRange(0, 2); [arr replaceObjectsInRange:range withObjectsFromArray:@[@99, @88, @77, @66]]; NSLog(@"%@", arr); /*输出结果: 2016-01-06 14:56:45.493 OCTest[3599:667081] ( 99, 88, 77, 66, 3 )*/
//swift: var arr = [1, 2, 3] arr.replaceRange(1..<2, with: [99, 88, 77, 66]) print(arr) //输出结果: [1, 99, 88, 77, 66, 3]
var arr1 = [1, 2, 3] arr1.replaceRange(Range(start: 0, end: 2), with: [99, 88, 77, 66]) print(arr1) //输出结果: [99, 88, 77, 66, 3]
3.2. 遍历
//OC: NSArray *arr = @[@1, @2, @3]; for (int i = 0; i < arr.count; i++) { NSLog(@"%@", arr[i]); } /*输出结果: 2016-01-06 15:00:10.702 OCTest[3635:694273] 1 2016-01-06 15:00:10.703 OCTest[3635:694273] 2 2016-01-06 15:00:10.703 OCTest[3635:694273] 3 */ NSArray *arr = @[@1, @2, @3]; for (NSNumber *number in arr) { NSLog(@"%@", number); } /*输出结果: 2016-01-06 15:03:43.192 OCTest[3684:723081] 1 2016-01-06 15:03:43.193 OCTest[3684:723081] 2 2016-01-06 15:03:43.194 OCTest[3684:723081] 3 */
//swift: var arr2 = [1, 2, 3] // 这种写法将在 swift3.0 被移除, 不能被使用 for var i = 0 ; i < arr2.count ; i++{ print(arr2[i]) } // 推荐的使用一下三种方法 for i in 0 ..< arr2.count{ print(arr2[i]) } for number in arr2{ print(number) } //指定起始范围 for number in arr2[0..<3]{ print(number) } //输出结果都是: //1 //2 //3
相关文章推荐
- Swift中对C语言接口缓存的使用以及数组、字符串转为指针类型的方法
- Swift3中数组创建方法
- swift学习之数组、字典和字符串
- swift-数组array
- Swift 数组基础
- swift基础--数组、字典
- Swift 4中一些实用的数组技巧小结
- swift 上传字符数组
- swift 第二节数组的创建、常用方法及数组便利
- Swift--数组和字典(一)
- Swift--数组和字典(二)
- Swift数组
- Swift中数组集合-b
- 十三 Swift3.0之 数组基本使用
- Swift数组总结
- Swift中数组和字典都是值类型
- 《从零开始学Swift》学习笔记(Day 17)——Swift中数组集合
- swift入门基础知识4数组
- 数组和字典—Swift学习笔记(七)
- Swift遍历数组的三种方式