黑马程序员技术交流社区
标题:
2014.11.16 关于集合类NSArray 的总结
[打印本页]
作者:
supergcs
时间:
2014-11-16 11:51
标题:
2014.11.16 关于集合类NSArray 的总结
本帖最后由 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:..] :向可变数组尾部添加一个数组对象。
复制代码
6608465105166982748.jpg
(22.45 KB, 下载次数: 34)
下载附件
2014-11-16 11:51 上传
作者:
许庭洲
时间:
2014-11-18 08:25
讲的很好,值得学习ing!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2