我的iOS学习历程 - OC第五天
2015-10-31 16:32
344 查看
今天主要讲的是字典的应用,其次讲了集合(主要在于字典)
配套练习请点击这里下载观看
main函数
字典是一个容器跟数组一样可以保存数据,保存的形式是以键值对的形式保存
key:
1.一个key对应一个value
2.key和Value必须是对象
3.key作为钥匙要具有唯一性在开发中一般使用字符串作为key值
value:
1.value可以是一个很复杂的结构例如字典里再套一个字典
2.字典里保存的键值对是无序的
不可变字典切记不能对不可变字典进行增删
用两个数组来初始化一个不可变字典
key的数组
values的数组
NSDictionary *dic = [[NSDictionary alloc]initWithObjects:values forKeys:keys];
初始化一个字典
使用该方法初始化切记value : key顺序
语法糖
初始化顺序 key : value(与其他几种初始化方法相反)
根据key取出字典中的value
要知道你取出的是什么类型就用什么类型去接收他
********************************************************************************
可变字典
初始化一个空字典
切记:必须进行初始化才能使用字典
练习:创建字典,管理前三排学生,每排为一组并输出
创建一个字典姓名:王龙性别:男年龄:18把各个信息打印出来(如果整个打印暂时没法打印文字)
快速遍历
for (填容器里对象的类型例如(NSString *str)in要遍历的容器(数组或字典))
{
NSLog(@"%@",str);
}
使用快速遍历forin时
1.遍历字典是遍历的字典中的所有key
2.遍历数组是遍历数组中的每一个元素
集合:无序不重复
1.不可变集合
三种初始化方法
2.可变集合
初始化空的集合
计算重复元素的个数的集合(可以用于计算以数组为参数初始化的集合中数组重复的元素个数)如果计算的是普通的初始化方法的集合重复元素不管多少个都是1(countforobject)
componentsSeparatedBystring(切割字符串)
数组排序
1.不可变数组排序方法
2.可变数组排序
不需要返回值 因为操作的是原数组
配套练习请点击这里下载观看
main函数
字典是一个容器跟数组一样可以保存数据,保存的形式是以键值对的形式保存
key:
1.一个key对应一个value
2.key和Value必须是对象
3.key作为钥匙要具有唯一性在开发中一般使用字符串作为key值
value:
1.value可以是一个很复杂的结构例如字典里再套一个字典
2.字典里保存的键值对是无序的
不可变字典切记不能对不可变字典进行增删
用两个数组来初始化一个不可变字典
key的数组
NSArray *keys = @[@"name",@"sex",@"age"];
values的数组
<span style="font-size:18px;">NSArray *values =@[@"wanglong",@"man",@"18"]; NSDictionary *dic = [NSDictionary dictionaryWithObjects:values forKeys:keys]; NSLog(@"%@",dic);</span>自定义初始化方法
NSDictionary *dic = [[NSDictionary alloc]initWithObjects:values forKeys:keys];
初始化一个字典
使用该方法初始化切记value : key顺序
NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys: @"wanglong",@"name", @"man",@"sex", @"18",@"age", nil]; NSLog(@"%@",dic); // 把所有key取出来 NSArray *key = [dicallKeys]; NSLog(@"%@",key); NSDictionary *dic = [[NSDictionary alloc]initWithObjectsAndKeys: @"wanglong",@"name", @"nan",@"sex", @"18",@"age", nil]; NSLog(@"%@",dic); // 取出所有value NSArray *value = [dicallValues];
语法糖
初始化顺序 key : value(与其他几种初始化方法相反)
<span style="font-size:18px;">NSDictionary *dic =@{@"name":@"wanglong",@"sex":@"nan",@"age":@"18"}; NSLog(@"%@",dic);</span>
根据key取出字典中的value
要知道你取出的是什么类型就用什么类型去接收他
NSString *value = [dic objectForKey:@"name"]; NSLog(@"%@",value); // 语法糖 取出字典中key对应的value NSString *age = dic[@"age"]; NSLog(@"%@",age); // 获取字典的元素个数 NSLog(@"%lu",[diccount]);
********************************************************************************
可变字典
初始化一个空字典
切记:必须进行初始化才能使用字典
NSMutableDictionary *dic = [NSMutableDictionary dictionary]; // 初始化的时候 给一个建议的容量 (初始化一个空字典) NSMutableDictionary *dic1 = [[NSMutableDictionaryalloc]initWithCapacity:10]; NSMutableDictionary *dic = [[NSMutableDictionary alloc]init]; // 添加键值对 [dic setObject:@"wanglong" forKey:@"name"]; [dic setObject:@"nan" forKey:@"sex"]; [dic setObject:@"age" forKey:@"18"]; NSLog(@"%@",dic); [dic removeObjectForKey:@"sex"]; NSLog(@"%@",dic); // 删除所有键值对 [dic removeAllObjects]; NSLog(@"%@",dic);
练习:创建字典,管理前三排学生,每排为一组并输出
NSMutableArray *array1 = [NSMutableArray arrayWithObjects:@"血样",@"赵姐",@"张文",@"壮壮",nil]; NSMutableArray *array2 = [NSMutableArrayarrayWithObjects:@"大君",@"听听",@"之言",@"兵器",nil]; NSMutableArray *array3 = [NSMutableArrayarrayWithObjects:@"z",@"a",@"s",@"d",nil]; NSMutableDictionary *dic = [[NSMutableDictionary alloc]init]; [dic setObject:array1 forKey:@"第一排"]; [dic setObject:array2 forKey:@"第二排"]; [dic setObject:array3 forKey:@"第仨排"]; NSLog(@"%@",dic);
创建一个字典姓名:王龙性别:男年龄:18把各个信息打印出来(如果整个打印暂时没法打印文字)
NSMutableDictionary *dic = [[NSMutableDictionary alloc]initWithObjectsAndKeys: @"王龙",@"姓名",@"男",@"性别",@"18",@"年龄" ,nil]; // 获取所有的key NSArray *array = [dicallKeys]; for (int n =0; n < [array count]; n++) { // 取出每一个key NSString *key = array ; NSString *value = dic[key]; // 打印一下 NSLog(@"%@ = %@ ",key,value); }
快速遍历
for (填容器里对象的类型例如(NSString *str)in要遍历的容器(数组或字典))
{
NSLog(@"%@",str);
}
使用快速遍历forin时
1.遍历字典是遍历的字典中的所有key
2.遍历数组是遍历数组中的每一个元素
NSMutableDictionary *dic = [[NSMutableDictionary alloc]initWithObjectsAndKeys: @"王龙",@"姓名",@"男",@"性别",@"18",@"年龄" ,nil]; for (NSString *objin dic) { // 用所有key取出value NSLog(@"%@:%@",obj,dic[obj]); }
集合:无序不重复
1.不可变集合
三种初始化方法
[NSSet *set = [NSSet set]; NSSet *set1 = [NSSet setWithObjects:@"d",nil]; NSSet *set2 = [NSSet setWithArray:NSArray *]; NSSet *set = [[NSSet alloc]initWithObjects:@"1",@"2",@"3",@"2",@"4",nil]; // 获取长度 NSLog(@"%lu",[set count]); NSLog(@"%@",set); // 获取集合中的一个元素 // 返回一个计算机认为最合理的一个元素 NSString *str = [set anyObject]; NSLog(@"%@",str);
2.可变集合
初始化空的集合
NSMutableSet *set = [NSMutableSet set]; // 添加元素 [set addObject:@"2"]; [set addObject:@"2"]; [set addObject:@"3"]; [set addObject:@"4"]; NSLog(@"%@",set); // 删除2元素 [set removeObject:@"2"]; NSLog(@"%@",set); // 删除所有元素 [set removeAllObjects]; NSLog(@"%@",set);
计算重复元素的个数的集合(可以用于计算以数组为参数初始化的集合中数组重复的元素个数)如果计算的是普通的初始化方法的集合重复元素不管多少个都是1(countforobject)
componentsSeparatedBystring(切割字符串)
数组排序
1.不可变数组排序方法
NSArray *array = @[@"A",@"B",@"D",@"W",@"S"]; NSArray *array1 = [array sortedArrayUsingSelector:@selector(compare:)]; NSLog(@"%@",array1);
2.可变数组排序
不需要返回值 因为操作的是原数组
NSMutableArray *array = [NSMutableArray arrayWithObjects:@"1",@"3",@"7",@"5",nil]; [array sortUsingSelector:@selector(compare:)]; NSLog(@"%@",array);
相关文章推荐
- 我的iOS学习历程 - OC第五天
- IOS开发笔记36-多控制器管理(1)
- iOS NSNotification的使用
- IOS观察者模式与通知中心
- IOS中NSUserDefaults的用法(轻量级本地数据存储)
- 开源中国社区iOS客户端学习-(4)下拉刷新
- iOS中的各种手势
- iOS的7个基本手势
- iOS 开发之FMDB的使用指南
- [iOS]BOOL / bool / Boolean / NSCFBoolean
- 高仿IOS---Dialog(中间式)
- iOS 2D绘图详解(Quartz 2D)之阴影和渐变(Shadow,Gradient)
- 新浪微博项目---首页技术点三.上拉刷新,下拉加载的实现(使用ios自带的小菊花实现)
- iOS-使用AudioServices相关接口的连续震动
- iOS的基本框架
- ios学习笔记(三)简单动画
- ios学习笔记(三)简单动画
- #坑1# iOS8以后presendViewController透明效果无效
- iOS设计模式
- IOS开发笔记35-多控制器管理(1)