20150612_OC之字典NSDictionary及NSMutableDictionary
2015-06-12 17:44
423 查看
//NSDictionary
//创建一个不可变字典对象
//NSMutableDictionary
//创建一个可变字典对象
//字典中对象都是键值对:key-->value
//字典中的键值对是没有顺序的
//字典中的key是唯一的,但是value是不唯一的,一个value可以有多个key
//创建一个不可变字典对象
//NSMutableDictionary
//创建一个可变字典对象
//字典中对象都是键值对:key-->value
//字典中的键值对是没有顺序的
//字典中的key是唯一的,但是value是不唯一的,一个value可以有多个key
// // main.m // IOS150612_ObjectiveC_Dictionary // // Created by Peng Junlong on 15/6/12. // Copyright (c) 2015年 Peng Junlong. All rights reserved. // #import <Foundation/Foundation.h> //NSDictionary //创建一个不可变字典对象 //NSMutableDictionary //创建一个可变字典对象 //字典中对象都是键值对:key-->value //字典中的键值对是没有顺序的 //字典中的key是唯一的,但是value是不唯一的,一个value可以有多个key int main(int argc, const char * argv[]) { @autoreleasepool { //用Value及key构建字典对象 NSDictionary *dic = [[NSDictionary alloc] initWithObjectsAndKeys:@"four",@"4",@"three",@"3",@"two",@"2",@"one",@"1", @"four",@"5",@"two",@"6",nil];//前面的是value,后面的是key NSLog(@"%@",dic); //创建常量字典对象 NSDictionary *dic2 = @{@"4":@"four",@"3":@"three",@"2":@"two"}; NSLog(@"dic2 = %@",dic2); //用传入的字典对象创建字典对象 NSDictionary *dic3 = [[NSDictionary alloc] initWithDictionary:dic]; NSLog(@"dic3 = %@",dic3); //用传入的value数组及key数组创建字典对象,个数一一对应 NSDictionary *dic4 = [[NSDictionary alloc] initWithObjects:@[@"four",@"three",@"two"] forKeys:@[@"4",@"3",@"2"]]; NSLog(@"dic4 = %@",dic4); //创建一个空的字典对象 NSDictionary *dic5 = [[NSDictionary alloc] init]; NSLog(@"dic5 = %@",dic5); //类方法创建字典对象 //跟initWithObjectsAndKeys:对应 NSDictionary *dic6 = [NSDictionary dictionaryWithObjectsAndKeys:@"four",@"4",@"three",@"3",@"two",@"2",@"one",@"1", nil]; NSLog(@"dic6 = %@",dic6); //跟initWithObjects:forKeys:对应 NSDictionary *dic7 = [NSDictionary dictionaryWithObjects:@[@"four",@"three",@"two"] forKeys:@[@"4",@"3",@"2"]]; NSLog(@"dic7 = %@",dic7); //计算字典中键值对的个数 NSUInteger len = [dic7 count]; NSLog(@"Len = %ld",len); //获取key对应的值 id value = [dic objectForKey:@"2"]; NSLog(@"value = %@",value); //获取所有的key,返回一个数组 NSArray *keys = [dic allKeys]; NSLog(@"keys = %@",keys); //获取value对应的多有的key NSArray *keys2 = [dic allKeysForObject:@"four"]; NSLog(@"keys2 = %@",keys2); //获取字典中多有的值 NSArray *values = [dic allValues]; NSLog(@"value = %@",values); //判断两个字典是否相等 BOOL result = [dic isEqualToDictionary:dic2]; NSLog(@"result = %d",result); //遍历字典,实质上是遍历字典的key //枚举器法,枚举key NSEnumerator *keysArray = [dic keyEnumerator]; for (id item in keysArray) { NSLog(@"%@:%@",item, [dic objectForKey:item]); } //快速枚举法,枚举的是key for (id key in dic) { NSLog(@"%@:%@",key, [dic objectForKey:key]); } //只遍历字典中的值,不能查找到key,因为value对应的不一定是唯一的 NSEnumerator *valueArray = [dic objectEnumerator]; for (id item in valueArray) { NSLog(@"value = %@",item); } /**************** Mutable Dictionary ****************/ //可变字典操作 //构造指定容量大小的字典对象 NSMutableDictionary *mulDict = [[NSMutableDictionary alloc] initWithCapacity:20]; NSLog(@"mulDict = %@",mulDict); //删除指定的key对应的键值对 NSMutableDictionary *mulDict2 = [NSMutableDictionary dictionaryWithDictionary:@{@"4":@"four",@"3":@"three",@"2":@"two"}]; [mulDict2 removeObjectForKey:@"3"]; NSLog(@"%mulDict2 = %@",mulDict2); //添加(或者修改)键值对,如果当前字典中已经有了这个key,则对这个key进行修改,若没有就是添加 [mulDict2 setObject:@"seven" forKey:@"2"]; // 修改 [mulDict2 setObject:@"seven" forKey:@"3"]; // 添加 NSLog(@"%mulDict2 = %@",mulDict2); //将传入的字典中的键值对添加到字典中,若有相同的键,则起到修改字典中相对应键的键值对 [mulDict2 addEntriesFromDictionary:dic3]; NSLog(@"%mulDict2 = %@",mulDict2); //删除所有的键值对,即清空字典对象 // [mulDict2 removeAllObjects]; // NSLog(@"%mulDict2 = %@",mulDict2); //删除key数组对应的所有键值对 [mulDict2 removeObjectsForKeys:@[@"2",@"4",@"6"]]; NSLog(@"%mulDict2 = %@",mulDict2); //重置字典对象 [mulDict2 setDictionary:dic]; NSLog(@"%mulDict2 = %@",mulDict2); } return 0; }
相关文章推荐
- 你了解System.out.println()的真正含义吗?
- 表达式计算的代码实现,按照前面两篇文章的逻辑步骤实现
- dos 命令大全
- meteor ---快速启动meteor和 mongodb 方法--MAC
- !!【OpenCV学习】计算两幅图像的重叠区域
- HttpURLConnection(三)
- IIS7.0 网站发布页面显示 500 - 内部服务器错误。您要查找的资源有问题,无法显示
- css高级应用及问题记录(持续更新)
- 贱人工具箱5.8破解版64位&32位免费版下载
- SAT数学经典试题及解析
- 详解Xcode 6的视图调试
- 查看 ios 真机调试log,导出log
- Velocity浅析及与Jsp、Freemarker对比
- iSensor APP 之 摄像头调试 OV3640 OV2640 MT9d112 ov5642
- 查看 ios 真机调试log,导出log
- Exchge2010配置-为CAS服务器申请PKI证书
- Android_TCP/IP开发——聊天室模型(客户端与服务器进行通信)
- mysql学习课程 云课堂
- linux下sendmail
- 动态类型