------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
NSArray:不可变数组
不可变:数组一旦创建完成后,数组成员不能够被修改,数组成员不能添加和删除
注:oc中的数组成员放在小括号里(),nil是数组结束标志
1:数组的创建
常用方法:NSArray *array = @[成员列表];//只能用在不可变数组中(无需写nil)
1:对象方法
- (id)initWithObjects:(id)firstObj, ... ;
- (id)initWithArray:(NSArray *)array;//由于内存管理技术,导致initWithArray的数组,与原数组的地址不同
2:类方法
+ (id)arrayWithObjects:(id)firstObj, ... ;
+ (id)arrayWithArray:(NSArray *)array;
数组成员初始化的时候放在[]里,打印出来的时候放在()
NSArray *array = @[@"bei", @"jing", @"huan", @"huan", @"ying", @"nin"];
#pragma mark 对象方法创建数组
//注意:nil是oc数组结束标志,如果nil在数组中间,nil后面的元素无法打印
NSArray *array1 = [[NSArray alloc] initWithObjects:@"bei", @"jing", @"huan", @"huan", @"ying", @"nin", nil];//最常用
NSArray *array2 = [[NSArray alloc] initWithArray:array];//用其他数组初始化当前数组
#pragma mark 类方法创建数组
NSArray *array3 = [NSArray arrayWithObjects:@"bei", @"jing", @"huan", @"huan", @"ying", @"nin", nil];//最常用
NSArray *array4 = [NSArray arrayWithArray:array];
NSLog(@"%@", array);
NSLog(@"%@", array1);
NSLog(@"%@", array2);
NSLog(@"%@", array3);
NSLog(@"%@", array4);
}
2:获取数组元素的个数
- (NSUInteger)count;//返回数组中元素个数
3:通过索引获取相应的元素//返回什么类型元素就要用什么类型对象接收//下标越界会报错
- (id)objectAtIndex:(NSUInteger)index;
NSArray *array = [NSArray arrayWithObjects:@"bei", @"jing", @"huan", @"ying", @"nin", nil];
NSLog(@"%lu", [array count]);
}
//数组成员的引用
NSArray *array = [NSArray arrayWithObjects:@"bei", @"jing", @"huan", @"ying", @"nin", nil];
NSLog(@"%@", [array objectAtIndex:1]);
NSLog(@"%@", array[1]);
4:数组成员的遍历(traverse)
1):for
2):快速枚举法for-in
//第一种数组成员的类型全部相同且已知(例如:类型全为NSString)
//第二种数组成员的类型不相同,且类型不已知(用id)
5:通过对象地址获取在数组中的索引值
- (NSUInteger)indexOfObject:(id)anObject;
6:判断数组中是否包含某个元素
- (BOOL)containsObject:(id)anObject;
//判断数组中是否包含某个元素
NSArray *array = [NSArray arrayWithObjects:@"bei", @"jing", @"huan", @"ying", @"nin", nil];
BOOL bl = [array containsObject:@"huan"];
if (bl) {
NSLog(@"包含该元素");
} else {
NSLog(@"不包含该元素");
}
7:获取数组的最后一个元素
- (id)lastObject;
NSArray *array = [NSArray arrayWithObjects:@"bei", @"jing", @"huan", @"ying", @"nin", nil];
NSLog(@"%@", [array lastObject]);
NSLog(@"%@", [array objectAtIndex:[array count]-1]);
8:数组成员用指定字符串进行分割//将字符串拆成数组对象(字符串的方法,将字符串进行切割成数组,分割成的每个部分是数组成员)
- (NSArray *)componentsSeparatedByString:(NSString *)separator;
9:把数组元素内容按照字符串separator进行拼接//将数组成员拼成字符串
- (NSString *)componentsJoinedByString:(NSString *)separator;
NSString *string = @"wo$men$dou$hen$shuai";
//- (NSArray *)componentsSeparatedByString:(NSString *)separator;
//作用:字符串的切割,将字符串切成数组(字符串方法)
NSArray *arrayFromString = [string componentsSeparatedByString:@"$"];
NSLog(@"%@", arrayFromString);
//- (NSString *)componentsJoinedByString:(NSString *)separator;
//作用:将数组元素拼成字符串(数组方法)
NSString *stringFromArray = [arrayFromString componentsJoinedByString:@" "];
NSLog(@"%@", stringFromArray);
NSMutableArray:可变数组,继承自NSArray
可变数组:数组创建后,数组成员仍然可以修改,添加和删除
初始化可变数组
NSMutableArray *mutable = [[NSMutableArray alloc] initWithCapacity:0];
NSMutableArray *mutable1 = [NSMutableArray arrayWithCapacity:0];
1:增加元素
1):在数组末尾追加(插入)元素
- (void)addObject:(id)anObject;
2):在数组末尾追加(插入)一个数组
- (void)addObjectsFromArray:(NSArray *)otherArray;
3):指定索引位置处插入元素
- (void)insertObject:(id)anObject atIndex:(NSUInteger)index;
NSArray *array = [NSArray arrayWithObjects:@"huan", @"ying", @"nin", nil];
NSMutableArray *mutableArray = [NSMutableArray arrayWithCapacity:0];//创建空数组
//- (void)addObject:(id)anObject;
//作用:在数组末尾添加元素
[mutableArray addObject:@"bei"];
[mutableArray addObject:@"jing"];
[mutableArray addObject:@"huan"];
[mutableArray addObject:@"ying"];
[mutableArray addObject:@"nin"];
NSLog(@"%@", mutableArray);
//- (void)addObjectsFromArray:(NSArray *)otherArray;
//作用:数组末尾添加一个数组
[mutableArray addObjectsFromArray:array];
NSLog(@"%@", mutableArray);
[mutableArray insertObject:@"hen" atIndex:2];
[mutableArray insertObject:@"hen" atIndex:6];
NSLog(@"%@", mutableArray);
2:删除元素
1):删除最后一个元素
- (void)removeLastObject;
2):删除指定索引的元素
- (void)removeObjectAtIndex:(NSUInteger)index;
3):删除指定元素//有多少删除多少
- (void)removeObject:(id)anObject;
4):在一定范围内删除指定元素
- (void)removeObject:(id)anObject inRange:(NSRange)range;
5):格局一个数组删除指定的元素
- (void)removeObjectsInArray:(NSArray *)otherArray;
6):删除所有元素
- (void)removeAllObjects;
NSMutableArray *mutableArray = [NSMutableArray arrayWithCapacity:0];
[mutableArray addObject:@"bei"];
[mutableArray addObject:@"jing"];
[mutableArray addObject:@"huan"];
[mutableArray addObject:@"ying"];
[mutableArray addObject:@"nin"];
[mutableArray addObject:@"jing"];
#if 0
//- (void)removeObject:(id)anObject;
//作用:删除指定元素
[mutableArray removeObject:@"jing"];
#endif
#if 0
//- (void)removeObjectAtIndex:(NSUInteger)index;
//作用:删除指定下标的元素
[mutableArray removeObjectAtIndex:1];
#endif
#if 0
//- (void)removeObjectsInRange:(NSRange)range;
//作用: 删除指定范围内的元素
NSRange range = {0, 2};
[mutableArray removeObjectsInRange:range];
#endif
#if 0
NSRange range = {0, 2};
//- (void)removeObject:(id)anObject inRange:(NSRange)range;
//作用:删除指定范围内的某个元素
[mutableArray removeObject:@"jing" inRange:range];
#endif
[mutableArray removeAllObjects];
NSLog(@"%@", mutableArray);
3:替换指定索引的元素
- (void)replaceObjectAtIndex:(NSUInteger)index withObject:(id)anObject;
4:交换数组元素
- (void)exchangeObjectAtIndex:(NSUInteger)idx1 withObjectAtIndex:(NSUInteger)idx2;
5:排序:根据排序准则排序
- (void)sortUsingSelector:(SEL)comparator;
6:修改数组
- (void)setArray:(NSArray *)otherArray;