一 、 NSArray
1> NSArray是一个集合类,相当于是OC数组。
用来存储对象的有序列表;
以面向对象操纵数组;
OC数组只能存放OC对象、不能存放非OC对象类型,比如int、struct、emue 等;
OC数组不能存放nil值;
NSArray是不可变数组;
OC数组不能存放nil值;
由C语言数组思考OC数组的创建
int a = 5 ;
int ages[10] ;
Person *p = [[Person alloc] init];
Person *person[5] = {p,[[Person alloc] init] };
1.NSArray的创建
NSArray *array2 = [NSArray arrayWithObject:@"Jake"];
快速创建一个NSArray对象
//NSArray *array4 = [NSArray arrayWithObjects:@"Jake",@"rose" ,@"1234",nil];
NSArray *array4 = @[@"Jake",@"rose" ,@"1234"];
nil是数组元素结束的标记
NSArray *array3 = [NSArray arrayWithObjects:@"Jake",@"rose" ,nil];
2.NSArray的元素个数
//[array2 count];
NSLog(@"%ld",array2.count);
NSLog(@"%ld",array3.count);
3.NSArray中元素的访问
//调用数组对象
NSLog(@"%@",[array3 objectAtIndex:1]);
NSLog(@"%@",array3[1]);
NSLog(@"%@",array4);
二、遍历
1.利用for循环
Person *p = [[Person alloc] init];
NSArray *array = @[p,@"Jack",@"Rose"];
for (int i = 0; i < array.count; i++)
{
NSLog(@"%@",array[i]);
}
//id obj 代表着数组中的每一个元素
for (id obj in array)
{
//找出obj元素在数组中的位置
unsigned long i = [array indexOfObject:obj];
NSLog(@"%ld - %@",i,obj);
}
3.block
//每遍历到一个元素,就会调用一次block
//并且当前元素和索引位置当作参数传给block
[array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
NSLog(@"%ld - %@",idx,obj);
}];
三、NSMutableArray
常用方法:可变数组NSMutableArray通过类方法arrayWithCapacity:来创建可变数组:
+ (instancetype)arrayWithCapacity:(NSUInteger)numItems;
添加元素
[array addObject:[[Person alloc]init ]];
[array addObject:@"jack"];
//删除所有元素
//[array removeAllObjects];
//删除指定对象
//[array removeObject:@"jack"];
//
[array removeObjectAtIndex:2];
错误写法
//[array addObject:10];
NSLog(@"%@",array);
NSLog(@"%ld",array.count);