您的位置:首页 > 职场人生

黑马程序员_Foundation框架03_集合类

2014-04-12 02:45 351 查看
----------------------
ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------

集合类:NSArray、NSSet、NSDictionary

一、NSArray

1、概念

OC数组,只能装OC对象类型,基本类型不能装

比C语言数组的好处:C语言只能装同一类型,OC可以随便来

2、子类

NSMutableArray:可变数组,父类NSArray为不可变数组

3、使用方法

1>创建(不能放基本数据类型,不能放nil)

①调用类方法:

NSArray *array1 = [NSArray array]; // 因为是不可变数组,如果这样创建就永远是个空数组了

NSArray *array3 = @[@"Demon1", @"Demon2"];


②快速创建(编译器特性):

[NSArray arrayWithObjects:@"Demon1", @"Demon2", nil]; // nil为数组结束标志,在数组里不能存放nil值

2>数组访问方式

①调用类方法:

[array2 objectAtIndex:1];

②快速访问(编译器特性):

array2[1]; // 利用数组名和下标(常用)

3>元素个数

[array count]; // 返回元素个数

array.count; // 跟[array count];一样


4>遍历方法
①最普通for循环,通过定义变量i来逐个访问

②使用array的obj

for(id obj in array) // obj代表数组中的每一个元素
{
NSInteger i = [array indexOfObject:obj]; // 返回当前数组元素的下标
NSLog(@"%ld - %@", obj);}
}

③block(推荐方式:不用自己加下标,而且不用自己取参数)

每遍历一个元素调用一次block,当前元素和索引位置会当做参数传给block

*stop相当于break

[array enumerateObjectsUsingBolck:
^(id obj, NSInteger idx, BOOL *stop)
{
NSLog(@"%ld - %@", idx, obj);
if(idx == 1)
{
*stop = YES;
}
}];

4、NSMutableArray

1>继承父类所有方法

2>特有方法

①添加方法

NSMutableArray *array2 = [NSMutableArray array];

[array2 addObject:@"Demon1", @"Demon2"];

②删除方法

[array removeObjectAtIndex:1];

[array removeObject:@"Demon1"];


5、注意点
1>用快速创建方式创建数组,返回对象类型是NSArray

二、NSSet

1、概念

可以理解为一个无序的数组

2、子类

NSMutableSet

3、使用方法

1>创建(不能放基本数据类型,不能放nil)

NSSet *s = [NSSet set]; // 因为是不可变,如果这样创建就永远是个空了

NSSet *s2 = [NSSet setWithObjects:@"DEMON1","DEMON2", nil];

2>元素个数

[s2 count]; // 返回元素个数

s2.count; // 跟[s2 count];一样

3>访问集合

因为无序,所以只能随机返回对象

NSString *str = [s2 anyObject];


4、NSMutableSet
1>继承父类所有方法

2>特有方法

①添加方法
NSMutableSet *s3 = [NSMutableSet s3];

[s3 addObject:@"Demon1", @"Demon2"];

②删除方法(因为无序,所以不能按下标删除)

[array removeObject:@"Demon1"];

三、NSDictionary

1、概念

存放键值对的字典,根据key可以找到value

2、子类

NSMutableDictionary:可变字典,父类NSDictionary为不可变字典

3、使用方法

1>创建

①调用类方法:key索引,value值

NSDictionary *dict1 = [NSDictionary dictionaryWithObject:@"Demon1" forKey:@"name"];


②使用数组存放

NSArray *keys = @[@"name", @"address"];NSArray *objects = @[@"Demon", @"beijing"];

NSDictionary *dict2 = [NSDitonary dictionaryWithObjects:Objects forKeys:keys];

③一个object跟一个key,中间逗号隔开(不易看清)

NSDictionary *dict3 = [NSDitonary dictionaryWithObjectsAndKeys:
@"Demon1", @"name",
@"beijing", @"address",
@"1233454", @"Phone",nil];

④快速创建(编译器特性)key : value, key2 : value2

NSDictionary dict4 = @{@"name" : @"Demon1", @"address" : @"beijing"};


2>  元素访问
①调用类方法:根据key索引查找value值

id obj = [dict objectForKey:@"name"];

②快速查找(编译器特性)

id obj2 = dict[@"name"];

3>元素个数(返回的是键值对的个数)

[dict count]; // 返回键值对数

dict.count; // 跟[dict count];一样

4>遍历

①for循环

// 先取出所有的key
NSArray *keys = [dict allkeys];

for(int i = 0; i < dict.count; i++)
{
NSString *key = keys[i];
NSString *object = dict[key];
NSLog("%@ - %@", key, object);
}

②block(参数的意思和数组的差不多,不赘述了)

[dict enumerateKeysAndObjectsUsingBlock:
^(id key, id obj, BOOL *stop)
{
NSLog("%@ - %@", key, obj);
}];

4、NSMutableDictionary

1>继承父类所有方法

2>特有方法

①添加方法(添加无先后顺序之分)
如果同样的key再赋值,会覆盖原值,key不能相同,value可以相同

NSMutableDictionary *dict = [NSMutableDictionary dictionary];

[dict setObject:@"Demon" forKey:@"name"];

②删除方法

[dict removeObjectforKey:@"name"];


5、注意点

1>用快速创建方式创建字典,返回对象类型是父类NSDictionary,不可变!

四、总结

1、NSArray、NSMutableArray

1>有序

2>快速创建(不可变):@[obj1, obj2, obj3, nil];

3>快速访问:数组名[i];

2、NSSet、NSMutableSet

1>无序

3、NSDictionary、NSMutableDictionary

1>无序

2>快速创建(不可变):@{key1 : value2, key2 : value2, key3 : value3};

3>快速访问:字典名[key];

----------------------
ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------详细请查看:www.itheima.com
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: