黑马程序员_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)
①调用类方法:
②快速创建(编译器特性):
2>数组访问方式
①调用类方法:
②快速访问(编译器特性):
3>元素个数
4>遍历方法
①最普通for循环,通过定义变量i来逐个访问
②使用array的obj
③block(推荐方式:不用自己加下标,而且不用自己取参数)
每遍历一个元素调用一次block,当前元素和索引位置会当做参数传给block
*stop相当于break
4、NSMutableArray
1>继承父类所有方法
2>特有方法
①添加方法
②删除方法
5、注意点
1>用快速创建方式创建数组,返回对象类型是NSArray
二、NSSet
1、概念
可以理解为一个无序的数组
2、子类
NSMutableSet
3、使用方法
1>创建(不能放基本数据类型,不能放nil)
2>元素个数
3>访问集合
因为无序,所以只能随机返回对象
4、NSMutableSet
1>继承父类所有方法
2>特有方法
①添加方法
②删除方法(因为无序,所以不能按下标删除)
三、NSDictionary
1、概念
存放键值对的字典,根据key可以找到value
2、子类
NSMutableDictionary:可变字典,父类NSDictionary为不可变字典
3、使用方法
1>创建
①调用类方法:key索引,value值
②使用数组存放
③一个object跟一个key,中间逗号隔开(不易看清)
④快速创建(编译器特性)key : value, key2 : value2
2> 元素访问
①调用类方法:根据key索引查找value值
②快速查找(编译器特性)
3>元素个数(返回的是键值对的个数)
4>遍历
①for循环
②block(参数的意思和数组的差不多,不赘述了)
4、NSMutableDictionary
1>继承父类所有方法
2>特有方法
①添加方法(添加无先后顺序之分)
如果同样的key再赋值,会覆盖原值,key不能相同,value可以相同
②删除方法
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
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
相关文章推荐
- 黑马程序员- IOS学习笔记-Foundation框架集合类、NSNumber、NSDate
- 黑马程序员——IOS基础——Foundation框架——字典、集合类、NSNumber/NSValue、NSObject、反射
- 黑马程序员——Foundation框架字典、集合类、反射
- 黑马程序员_Foundation框架基础知识(二)集合类
- 黑马程序员_object c学习日记⑥_Foundation框架:结构体、集合类、NSString、日期类
- 黑马程序员_OC学习之Foundation框架1
- 黑马程序员_Foundation框架
- 黑马程序员--Foundation框架之--NSArray类以及它的子类NSMutableArray类
- 黑马程序员——Foundation框架之结构体
- 黑马程序员-IOS学习笔记 Foundation框架下 NSString的常见方法
- 黑马程序员-12.OC的Foundation框架
- 黑马程序员------Foundation框架------NSDictionary字典
- 黑马程序员-IOS基础之OC框架(Foundation)
- 黑马程序员——OC中Foundation框架
- 黑马程序员——OC学习之Foundation框架常用类的常用方法
- 黑马程序员——Foundation框架:字符串之集合类
- 黑马程序员——Objective-C程序设计(第4版)学习笔记之14-Foundation框架简介——黑马 IOS 技术博客
- 黑马程序员-OC学习笔记-----Foundation框架(集合、NSNumber、NSDate)
- 【黑马程序员】【Foundation框架】NSNumber、NSValue和NSData
- 黑马程序员--OC学习篇之Foundation框架中的NSString对象和NSMutableString对象