——- ios培训、ios培训、期待与您交流! ———-
NSArray是什么?
NSArray是OC中集合的一种,同样是Foundation框架下NSObject的一个儿子类.他可以存储不同类型的对象.里面存数的对象是有序的.数组一旦创建成功,内容不可改变.
NSArray几种方法
1.创建数组的几种方法
//1)创建一个空数组
NSArray *arr1 = [NSArray array];//无意义,数组不可变,一旦创建了也不能往里面放元素
//2)创建数组,只有一个元素
NSArray *arr2 = [NSArray arrayWithObject:@"1"];
//3)创建数组,有多个元素
NSArray *arr3 = [NSArray arrayWithObjects:@"one",@"two",@1,nil];
//简写的方式:
NSArray *arr3 = @[@"one",@"two",@1]; //与上面等效
//4)调用对象方法,创建数组
NSArray *arr4 = [[NSArray alloc] initWithObjects:@"three",[NSNull null],@"four", nil];
//5)用一个数组可以创建另外一个数组
NSArray *arr5 = [NSArray arrayWithArray:arr3];
NSLog(@"arr5 = %@",arr5);
2.获取数组的长度 count获取数组的元素的个数
NSLog(@"%ld",arr3.count);//调用count方法计算数组arr3的元素个数返回值是长整型.
3.根据下标,获取下标对应的对象
[arr3 objectAtIndex:3]//获取arr3中下标为3的元素
str = arr3[3]//简写的形式
4.返回元素的下标
NSUInteger loc = [arr3 indexOfObject:@"three"]
5.数组中是否包含了某个元素
[arr3 containsObject:@"four"]//返回值是一个BOOL类型的值.
数组的几种遍历方式
1普通的方式,通过下标访问
for (int i=0; i<arr.count; i++) {
NSLog(@"-> %@",arr[i]);
}
- 快速枚举法 for循环的增强形式
for (NSString * str in arr) {
NSLog(@"---> %@",str);
}
- 使用block的方式,进行访问
[arr enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
NSLog(@"idx = %ld,obj = %@",idx,obj);
}];
NSArray的几点思考
1.数组是有序的,每一个元素都有一个下标跟它一一对应.
2.一旦创建里面的元素不能改变了.
3.遍历的时候默认返回的是数组里面的元素.
NSMutableArray
NSMutableArray是什么?
NSMutableArray是NSArray的子类,可以使用NSArray的所有方法.
NSMutableArray创建的数组是可变的,意思就是创建后数组的空间是不固定的,可以任意的往里面添加或者删除元素.
NSMutableArray的独有的方法
1.创建数组
//i. 空数组
NSMutableArray *arr1 = [NSMutableArray array];
NSLog(@"%p",arr1);
//ii.创建的时候初始化一个元素
NSMutableArray *arr2 = [NSMutableArray arrayWithObject:@"one"];
//iii.创建数组的时候,初始化多个元素
NSMutableArray *arr3 = [NSMutableArray arrayWithObjects:@"one",@"two",@3,nil];
//IV . 创建一个数组,并且指定长度,
NSMutableArray *arr4 = [NSMutableArray arrayWithCapacity:5];
2.添加元素
[arr1 addObject:@"fengjie"];
[arr1 insertObject:@"zbz" atIndex:0];//插入元素到指定的位置
3.删除元素
//根据对象内容删除
[arr1 removeObject:@"zbz"];
//根据位置删除
[arr1 removeObjectAtIndex:1];
//全部删除
[arr1 removeAllObjects];
4.修改元素
[arr3 replaceObjectAtIndex:1 withObject:@"four"];
//简写的形式:
arr3[1] = @"four";
5.查找是否存在某个元素
BOOL isSearch = [arr3 containsObject:@"four"];
6.可以交换数组元素 [arr5 exchangeObjectAtIndex:0 withObjectAtIndex:4];
关于NSMutableArray的几点思考
1.NSMutableArray* arr=@[@”one”,@2];这种书写方式是错误的,这种简写创建方式默认返回一个不可变的数组,显然是不符合逻辑的.
2.不管是可变的还是不可变的数组,都是数组,里面只能放对象,不可以放 int,float,double等数据.
3.NSMutableArray常见的数组可以为空,可以在创建之后往里面添加元素,所以创建的数组是有意义的,这一点跟NSArray有区别.