【数组】
OC中使用两种数组,使用C的数组存放基本数据类型的数据或地址;使用OC的数组存放OC的对象地址。
OC的数组分为两种:不可变数组(NSArray)和可变数组(NSMutableArray)
一、不可变数组(NSArray)
1、创建
NSArray *ary1 = [[NSArray alloc]
initWithObjects:@"one",@"two",@"three",nil];
NSArray *ary2 = [NSArray
arrayWithObjects:@"123",@"456",@"789",nil];
NSArray *ary3 = [[NSArray alloc] initWithArray:ary1];
NSArray *ary4 = [NSArray arrayWithArray:ary2];
//结尾不需要nil
NSArray *ary5 = @[@"abc",@"def",@"hij"];
2、字符串分割
//按照指定的字符串进行切割
NSArray *ary = [str componentsSeparatedByString:@"an"];
//按照指定的字符集合
NSCharacterSet *charSet = [NSCharacterSet
characterSetWithCharactersInString:@"oa"];
NSArray *ary2 = [str
componentsSeparatedByCharactersInSet:charSet];
3、字符串的拼接
//按照指定的字符串进行拼接
NSString *str2 = [ary componentsJoinedByString:@"*"];
4、获取元素个数
NSUInteger count = [ary count];
5、获取单个元素
//返回指定的元素
id obj = [ary objectAtIndex:1];
NSLog(@"%@", ary[0]);
6、数组的遍历
//遍历数组
for (int i=0; i<[ary count]; i++) {
NSLog(@"%@", ary[i]);
}
//快速遍历
for (id obj in ary) {
//obj每次循环指向数组中的一个元素,依次向后
NSLog(@"%@",obj);
}
说明:
1、在for-in中,break和continue同样可以使用
2、在遍历过程中,不能修改数组
7、获取指定对象的索引
//查看对象在数组中的索引,找不到返回NSNotFound
NSUInteger index = [ary indexOfObject:@"too"];
8、判断是否包含指定对象
BOOL ret = [ary containsObject:@"too"];
二、可变数组(NSMutableArray)是集成NSArray的
1、设置(set)
[mAry setArray:@[@"one",@"two",@"three"]];
2、增加(add)
[mAry addObject:@"four"];
[mAry addObjectsFromArray:@[@"250",@"3"]];
3、插入(insert)
//在指定位置插入元素
[mAry insertObject:@"2" atIndex:2];
4、删除(remove)
//删除最后一个元素
[mAry removeLastObject];
//删除指定元素
[mAry removeObject:@"250"];
//删除指定位置的元素
[mAry removeObjectAtIndex:2];
//删除指定范围内的指定元素
[mAry removeObject:@"250" inRange:NSMakeRange(3, 3)];
//删除指定范围内的所有元素
[mAry removeObjectsInRange:NSMakeRange(2, 3)];
//删除某个数组指定的元素
[mAry removeObjectsInArray:@[@"250",@"2"]];
//删除所有元素
[mAry removeAllObjects];
5、替换(replace)
[mAry replaceObjectAtIndex:0 withObject:@"one"];
6、交换(exchange)
[mAry exchangeObjectAtIndex:0 withObjectAtIndex:2];
7、//把不可变转化为一个新的可变数组
NSArray *array = [NSArray arrayWithObjects: @"a",@"b",@"c",@"d",nil]; NSMutableArray * array1 = [NSMutableArray arrayWithArray:array];