设为首页 加入收藏

TOP

OC:OC中的集合类-NSArray(一)(一)
2015-01-21 11:09:29 来源: 作者: 【 】 浏览:49
Tags:集合 -NSArray

/*OC中的集合类-

NSArray 用于对象有序集合

NSSet 用于对象无序集合

NSDictionary 用于键值映射

这三种集合类是不可变的(一旦初始化后,就不能改变)

(可变集合类,这三种可变集合类是对应上面三种集合类的子类)

NSMutableArray NSMutableSet NSMutableDictionary

这些集合类只能手机Cocoa对象(NSObject对象),如果想保存一些原始的C数据(如:int,float,double,BOOL等),则需要将这些原始的C数据封装成NSNumber类型的,NSNumber对象是Cocoa对象,可以被保存在集合类中。

*/

/*

NSArray OC数组

*/

//==============================================================

//C数组:所有元素必须是相同的数据类型

int age[] = {1,2,3};

age[1]; //取数组中的元素

//把car放C数组

Car *car1 = [[Car alloc] init];

Car *cAry[3] = {car1,[Car new],[Car new]};

//==============================================================

//创建OC数组,ary1是空数组(这种方法不用)

NSArray *ary1 = [NSArray array];

//ary2初始化时有一个元素

NSArray *ary2 = [NSArray arrayWithObject:@"jereh"];

//创建有多个元素的数组

//nil不能缺省,是数组结束标志,不能作为元素存到数组里

NSArray *ary3 = [NSArray arrayWithObjects:@"h",@"e",@"kong", nil];

//快速创建数组 ,@[] 不能存nil

NSArray *ary4 = @[@"c",@"s",@"d",@"n"];

//==============================================================

//OC数组元素个数 -(unsigned) Count;

NSArray *ary5 = @[@"c",@"s",@"d",@"n"];

[ary5 count];

// ary5.count;

NSLog(@"数组元素个数:%ld",ary5.count);

//==============================================================

//访问数组元素 -(id) objectAtIndex:(unsigned int)index;//获取指定索引处的对象

NSArray *ary6 = @[@"c",@"s",@"d",@"n"];

// [ary6 objectAtIndex:0];//获得数组中某个位置的元素

NSLog(@"访问数组:%@",[ary6 objectAtIndex:0]);

NSLog(@"访问数组:%@",ary6[0]); //C数组的简便方法

//==============================================================

//1.遍历OC数组(按照顺序输出)

Car *car = [[Car alloc] init];

NSArray *ary7 = @[@"a",@"b",@"c",@"d",@"e",@"f",@"g",@"h",car];

for (int i=0; i

NSLog(@"遍历数组ary7:%@",ary7[i]);

}

/*2.快速遍历OC数组(快速枚举):里面的元素都是OC对象,所以都是id类型;

表示把ary7中的每个元素都赋值给obj,然后循环

缺点:不知道取出的对象在数组中的位置。

限制:不应在枚举过程中增加会删除数组中的指针

*/

int i = 1;

for (id obj in ary7) {

NSLog(@"快速遍历第%i个:%@",i,obj);

i++;

}

/*3.利用block遍历数组

block没有返回值,有三个参数,obj当前对象,idx位置,*stop是停止遍历

每遍历一个对象,block都会被调用一次

(方法参数block部分,按回车会自动生成,不用手动写)

*/

[ary7 enumerateObjectsUsingBlock:

^(id obj, NSUInteger idx, BOOL *stop) {

//BOOL *stop

if (idx>0) {

*stop = YES;

}

NSLog(@"block快速遍历 第%ld个元素:%@",idx,obj);

}

];

//==================================================================

/*其他用法

-(BOOL)containsObject:obj 确定数组中是否包含对象obj

-(id)objectAtIndex:i 存储在位置i的对象

-(NSUInteger)indexOfObject:obj 第一个包含obj元素对的索引号

/*

NSMutableArray OC可变数组

是NSArray的子类,类似NSArray,但是可以增加或删除指针。

*/

//=========================================================

//创建空数组

NSMutableArray *ary1 = [NSMutableArray array];

//添加元素

[ary1 addObject:@"a"];

[ary1 addObject:@"d"];

NSLog(@"ary1 %@",ary1);

//添加多个元素

NSMutableArray *ary2 = [NSMutableArray array];

[ary2 addObjectsFromArray:ary1];

NSLog(@"ary2 %@",ary2);

//=========================================================

//删除元素

NSMutableArray *ary3 = [NSMutableArray arrayWithObjects:@"a",@"b",@"c",@"d", nil];

//按照索引位置删除元素

[ary3 removeObjectAtIndex:0];

NSLog(@"ary3 %@",ary3);

//删除指定元素

[ary3 removeObject:@"b"];

NSLog(@"ary3 %@",ary3);

//删除全部元素

[ary3 removeAllObjects];

//删除最后一个元素

[ary3 removeLastObject];

NSMutableArray *ary4 = [NSMutableArray arrayWithObjects:@"a",@"b",@"c",@"d", nil];

//在指定的范围内找到特定的元素进行删除

[ary4 removeObj

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C指针编程之道 ---第八次笔记 下一篇C指针编程之道 ---第九次笔记

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: