本帖最后由 supergcs 于 2014-11-16 11:53 编辑
- 一、NSArray类的常用操作
- NSArray数组一旦创建就决定了是不是可变,而且永远是可变(NSMutableArray)或不可变(NSArray)。NSArray保存的对象可以是不同的对象。但只能保存对象,int ,char,double等基本数据类型不能直接保存,需要通过转换成对象才能加入数组。使用NSArray的类方法arry创建数组
- 黑马程序员——OC中的Foundation框架中集合类NSString、NSArray、NSSet、NSDictionaty - songxing10000 - 十一岁的加重
-
- 1、创建时定义为空数组,那么array数组将永远是空数组
- NSArray *array = [NSArray array];
- 2、创建数组对象有两种方式
- // 第一种方式:数组中包含了一个NSString对象
- NSArray *array = [NSArray arrayWithObject:@"Jack"];
- //数组中包含了多个对象并以nil结尾,nil是用来标识数组元素结束的标识
- NSArray *array1 = [NSArray arrayWithObjects:@"Jack",@"Rose", nil];
- //注意:因此OC数组中不能存放空对象,下面这样写是错误的(倒第二个nil)
- NSArray *array1 = [NSArray arrayWithObjects:@"Jack",nil, nil];
-
- // 第二种方式:快速创建(推荐使用)
- NSArray *array2 = @[@"Jack",@"Rose"];
-
- // 获取数组的长度 array1.count;
- NSUInteger count = [array1 count];
- NSLog(@"%ld",count);
- 3、访问数组中的对象的两种方式
- // 数组中索引为1的对象,OC中提供的方法 返回:Jack
- NSString *str1 = [array1 objectAtIndex:0];
- // 编译器特性:自动转换为上面的形式来访问 返回:Jack
- NSString *str2 = array1[0];
-
- 4、遍历数组的三种方式
- // 第一种:
- for (int i = 0; i<array1.count; i++) {
- NSLog(@"%@",array1[i]); // 数组中存放的是对象可以用%@输出
- if (i ==0) { //想要在几个时停止
- break;
- }
- }
-
- // 第二种:将array1数组中的每个对象拿出来赋给obj然后依次打印
- for (id obj in array1) { // id obj 代表数组中的对象
- // 获取obj对象在数组中的索引
- NSUInteger index = [array1 indexOfObject:obj];
- NSLog(@"%ld-->%@",index,obj);
- }
-
- // 第三种:使用Block 每次从数组中遍历一个元素后就传递给block,block也相应的执行一次
- // block中的id obj对应数组中的元素,NSUInteger idx对应数组中元素的索引 ,BOOL用来停止遍历
- [array1 enumerateObjectsUsingBlock:
- ^(id obj, NSUInteger idx, BOOL *stop) {
-
- NSLog(@"%ld-->%@",idx,obj);
-
- // 如果索引为0 立即停止遍历
- if (idx ==0) {
- *stop = YES;
- }
- }];
- BOOL *stop这个可以下面这样理解
- for (int i = 0; i<array.count; i++)
- {
- // 用来标记是否需要停止遍历
- BOOL isStop = NO;
-
- // 取出元素
- id obj = array[i];
- myblock(obj, i, &isStop);
- if (isStop)
- {
- break;
- }
- }
-
- 二、NSMutableArray的基本操作:
- 1、创建NSMutableArray数组
- // 创建可变数组
- NSMutableArray *mutableArray = [NSMutableArray array];
- NSMutableArray *array = [NSMutableArray arrayWithObjects:@"rose", @"jim", nil];
- 注意:@[]返回的是不可变NSArray数组 这样会报错
- NSMutableArray *mutalbeArray2 = @[@"张三",@"李斯"];
- 2、为可变数组增加任意对象
-
- Person *person = [[Person alloc] init];
- [mutableArray addObject:person];
- [mutableArray addObject:@"Jack"];
- [mutableArray addObject:@"John"];
- [mutableArray addObject:10]; 数组中不可以存放基本数据类型
- 3、 从数组中删除指定的元素
-
- [mutableArray removeObject:@"John"];
- [mutableArray removeObjectAtIndex:0];
- // 将数组中的元素全部删除
- [mutableArray removeAllObjects];
- [NSMutableArray arrayWithCapacity:6] :初始化可变数组对象的长度,如果后面代码继续添加数组超过长度6以后NSMutableArray的长度会自动扩充,6是自己可以设置的颗粒度。
- [array addObject:...] : 向可变数组尾部添加数据对象。
- [array addObjectsFromArray:..] :向可变数组尾部添加一个数组对象。
复制代码
|
|