一. 数组定义(比较 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
)*/
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. 空数组
NSArray *arr = @[];
NSArray *arr1 = [NSArray array];
NSLog (@"%@" , arr1);
//swift空数组
var arr5 = [ ]var arr6 = [Int ]( )var arr7 = Array<Int > ()
print(arr7)
//输出结果: []
1.3. 可变与不可变数组
NSArray
NSMutableArray
var arr8 = []
let arr9 = []
1.4. 元素类型
NSArray *arr = @[@1 , @"cdh" , @130 ];
NSLog (@"%@" , arr);
var arr = [1 , "CDH" , 130 ]
print (arr)
var arr10:Array <Any> = [1 , "CDH" , 130 ]
print (arr10)
var arr12 : [NSObject] = [2 , "cdh" , 18 ]
print (arr12)
var arr14:Array <Int> = [1 , 10 , 130 ]
print (arr14)
var arr15:[Int] = [1 ,2 ,3 ]
print (arr15)
二. 数组操作
2.1. 获取长度
//OC:
NSArray *arr = @[ @1 , @2 , @3 ];
NSLog(@" %tu ", arr.count);
//输出结果: 2016-01-06 01:19:54.874 test[12086:2209180] 3
var arr = [1 , 2 , 3 ]
print (arr.count)
2.2. 判断是否为空
NSArray *arr = @[];
NSLog (@"result = %d" , arr.count != 0 );
var arr1 = [1 , 2 , 3 ]
print (arr1.isEmpty)
注意: 只有该数组有指定的存储类型,或者数组中有元素才能使用 isEmpty 这个方法, 不然会报错, 比如:
var arr = []
print (arr.isEmpty)
2.3. 检索
NSArray *arr = @[@1 , @2 , @3 ];
NSLog (@"%@" , arr[0 ]);
var arr2 = [1 , 2 , 3 ]
print (arr2[0 ])
2.4. 追加
NSMutableArray *arr =
[NSMutableArray arrayWithObjects:@1 , @2 , @3 , nil ];
[arr addObject:@4 ];
NSLog (@"%@" , arr);
var arr3 = [1 , 2 , 3 ]
arr3.append (4 );
print (arr3)
var arr4 = [1 , 2 , 3 ]
arr4 += [4 ]
print (arr4)
var arr5 = [1 , 2 , 3 ]
arr5 += [4 ]
arr5 += [5 ,6 ,7 ]
var arr6 = [1 , 2 , 3 ]
arr6 += [4 ]
arr6 += [5 ,6 ,7 ]
arr6 += arr6[0 ...3 ]
print (arr6)
2.5. 插入
NSMutableArray *arr =
[NSMutableArray arrayWithObjects:@1 , @2 , @3 , nil ];
[arr insertObject:@4 atIndex:0 ];
NSLog (@"%@" , arr);
var arr7 = [1 , 2 , 3 ]
arr7.insert(4 , atIndex: 0 );
print (arr7)
2.6. 更新
NSMutableArray *arr =
[NSMutableArray arrayWithObjects:@1 , @2 , @3 , nil ];
arr[0 ] = @8 ;
NSLog (@"%@" , arr);
var arr8 = [1 , 2 , 3 ]
arr8[0 ] = 8
print (arr8)
2.7. 删除
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);
var arr9 = [1 , 2 , 3 ]
arr9.removeAtIndex(0 )
print (arr9)
var arr10 = [1 , 2 , 3 ]
arr10.removeLast()
print (arr10)
var arr11 = [1 , 2 , 3 ]
arr11.removeAll(keepCapacity: false )
print (arr11)
print (arr11.capacity)
2.8. Range
NSMutableArray *arr =
[NSMutableArray arrayWithObjects:@1 , @2 , @3 , nil ];
[arr removeObjectsInRange:NSMakeRange(0 , 2 )];
NSLog (@"%@" , arr);
var arr12 = [1 , 2 , 3 ]
arr12.removeRange(Range(start: 1 , end: 2 ))
print (arr12)
var arr13 = [1 , 2 , 3 ]
arr13.removeRange(0. ..0 )
print (arr13)
var range14 = 0. ..5
print (range14)
三. 数组的其它操作
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)
var arr = [1 , 2 , 3 ]
arr.replaceRange(1. .<2 , with : [99 , 88 , 77 , 66 ])
print(arr)
var arr1 = [1 , 2 , 3 ]
arr1.replaceRange(Range(start: 0 , end : 2 ), with : [99 , 88 , 77 , 66 ])
print(arr1)
3.2. 遍历
NSArray *arr = @[@1 , @2 , @3 ];
for (int i = 0 ; i < arr.count ; i++) {
NSLog (@"%@" , arr[i]);
}
NSArray *arr = @[@1 , @2 , @3 ];
for (NSNumber *number in arr) {
NSLog (@"%@" , number);
}
var arr2 = [1 , 2 , 3 ]
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)
}