------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
接下来复习的内容是Foundation中使用频率很高的NSArray和NSMutableArray。
这两个类和Java中集合的概念相似。
一、NSArray
NSArray是一个数组性质的类。并且同样与Java类似,只能用来存放对象(且只能是OC对象)。不允许有空值出现。
NSArray是不可更改的,一旦创建完成后,我们无法对其中的项进行添加或删除的操作。NSArray中存放是有序的。
下面是一些NSArray相关的常用操作和方法,包含了具体的代码练习:
pragma mark NSArray
void array1(){
//NSArray只允许保存 OC对象
//创建一个空数组
NSArray *array = [NSArray array];
//创建有一个元素的数组
array = [NSArray arrayWithObject:@"Elors"];
//创建有多个元素的数组
array = [NSArray arrayWithObjects:@"Elors", @"Ashi", @"Archive", nil];
//查看元素个数
unsigned long count = array.count; //3
//检测是否包含了这个元素
BOOL flag = [array containsObject:@"Elors"]; //1
//获取最后一个元素
[array lastObject]; // Archive
//获取指定位置的对象元素
[array objectAtIndex:0]; // Elors
//使数组内所有对象调用方法
[array makeObjectsPerformSelector:@selector(description)];
//NSLog(@"%d", flag);
//NSLog(@"%ld",count);
//NSLog(@"%@",[array description]);
};
有了数组之后,我们需要面对另外一个使用频率极高的操作了——遍历数组。
下面的代码练习中。我分别使用了四种方式实现了对数组的遍历:
1.普通循环
#pragma mark 遍历数组
void array2(){
NSArray *array = [NSArray arrayWithObjects:
@"Elors", @"Ashi", @"Archive", nil];
for (int i = 0, max = array.count; i < max; i++) {
NSObject *obj = [array objectAtIndex:i];
NSLog(@"%@",obj.description);
}
2.for in循环
NSArray *array = [NSArray arrayWithObjects:
@"Elors", @"Ashi", @"Archive", nil];
for (NSObject *obj in array) {
NSLog(@"%@",obj.description);
}
3.使用Foundation框架提供的方法
NSArray *array = [NSArray arrayWithObjects:
@"Elors", @"Ashi", @"Archive", nil];
[array enumerateObjectsUsingBlock:
^(id obj, NSUInteger idx, BOOL *stop) {
NSLog(@"%@",[obj description]);
//*stop = YES; //终止遍历
}];
4.使用其迭代器
NSArray *array = [NSArray arrayWithObjects:
@"Elors", @"Ashi", @"Archive", nil];
//获取数组迭代器
NSEnumerator *em = [array objectEnumerator];
//反序迭代器
em = [array reverseObjectEnumerator];
id obj = nil;
while (obj = [em nextObject]) {
NSLog(@"%@",[obj description]);
}
以上四中方式中,第三种使用比较方便。
二、NSMutableArray
NSMutableArray同样是一个数组性质的类,它继承于NSArray。它是一个可变的数组。在创建之后可以对数组项进行操作。
由于NSMutableArray继承与NSArray,所以大部分东西都是大同小异的,下面我列举一些基本的操作方法:
void array1(){
NSMutableArray *array = [NSMutableArray arrayWithObjects:@"Elors", nil];
//添加元素
[array addObject:@"Ashi"];
[array addObject:@"AXE"];
//删除最后一个元素
//[array removeLastObject];
//删除所有元素
//[array removeAllObjects];
//替换元素
[array replaceObjectAtIndex:1 withObject:@"Archive"];
//排序
[array sortUsingSelector:@selector(compare:)];
NSLog(@"%@",array.description);
};