OC语言字典
2015-07-25 09:40
357 查看
// 创建字典对象 // NSDictionary *dic = [[NSDictionary alloc] init]; // NSDictionary *dict = [NSDictionary dictionary]; NSDictionary *diction = [[NSDictionary alloc] initWithObjectsAndKeys:@"1",@"2",@"3",@"4", nil] ; NSLog(@"%@", diction); // 定义字面量字典类型 NSDictionary *dic = @{@"1": @"2",@"3":@"4"}; // 不可变的类型 意味着里边的内容也不可变 NSLog(@"%@", dic); // key是唯一的,但是value可以重复,key不能为空(注意成对出现) // 当前有多少键值对 NSLog(@"%ld", diction.count); // 通过key找到对应的value NSLog(@"%@", [diction objectForKey:@"2"]); // diction[对应的key] NSLog(@"%@", diction[@"2"]); // 获取字典里所有key以及key所对应的value NSLog(@"%@", diction.allKeys); NSLog(@"%@", [diction allValues]);
// 可变的字典 NSMutableDictionary *dictionary1 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"1",@"2",@"3",@"4", nil]; // for循环如何遍历字典 for (NSInteger i = 0; i < dictionary1.count; i++) { NSLog(@"%@ = %@", dictionary1.allKeys[i],dictionary1.allValues[i]); } // forin的前部分是字典里的key for (NSString *temp in dictionary1) { NSLog(@"%@ = %@", temp, dictionary1[temp]); } // 对可变字典通过key值进行添加或替换 // 当前key值不存在时 [dictionary1 setObject:@"7" forKey:@"8"]; NSLog(@"%@", dictionary1); // 当key存在时 [dictionary1 setObject:@"199" forKey:@"8"]; NSLog(@"%@", dictionary1); // 移除键值对 [dictionary1 setValue:nil forKey:@"8"]; NSLog(@"%@", dictionary1); // 这就是setValue和setObject的区别 当对value进行赋值为nil时 可执行移除对应key键值对操作 而Object如果这样写会直接崩溃 [dictionary1 setValue:@"199" forKey:@"8"]; [dictionary1 removeObjectForKey:@"8"]; NSLog(@"%@", dictionary1);
// 字典里嵌套数组 NSArray *arr1 = @[@"1", @"2", @"3", @"4"]; NSArray *arr2 = @[@"5", @"6", @"7", @"8"]; NSMutableDictionary *dictionary = [NSMutableDictionary dictionaryWithObjectsAndKeys:arr1,@"arr1",arr2,@"arr2", nil]; // 遍历 for (NSString *str in dictionary) { // 针对对应的key找到value,value是一个数组,所以用一个数组对象来接收 NSArray *arr = dictionary[str]; for (NSString *temp in arr) { NSLog(@"%@", temp); } }
// 数组里嵌套字典 NSDictionary *dic1 = [NSDictionary dictionaryWithObjectsAndKeys:@"杨林",@"name",@"19",@"age", nil]; NSDictionary *dic2 = [NSDictionary dictionaryWithObjectsAndKeys:@"刘山山",@"name",@"20",@"age", nil]; NSDictionary *dic3 = [NSDictionary dictionaryWithObjectsAndKeys:@"商帅",@"name",@"18",@"age", nil]; NSDictionary *dic4 = [NSDictionary dictionaryWithObjectsAndKeys:@"崔磊",@"name",@"21",@"age", nil]; NSArray *array = @[dic1,dic2,dic3,dic4]; // 遍历 for (NSDictionary *dic in array) { for (NSString *key in dic) { NSLog(@"%@", dic[key]); } }
// 三层结构 // 字典里套数组再套字典 NSArray *array1 = @[dic1,dic2]; NSArray *array2 = @[dic3,dic4]; NSDictionary *bigDic = [NSDictionary dictionaryWithObjectsAndKeys:array1, @"array1",array2,@"array2", nil]; // 遍历 for (NSString *str in bigDic) { NSArray *arr = bigDic[str]; for (NSDictionary *dic in arr) { for (NSString *key in dic) { NSLog(@"%@", dic[key]); } } }
// 数组里套数组再套字典 NSArray *bigArr = @[array1, array2]; for (NSArray *arr in bigArr) { for (NSDictionary *dic in arr) { for (NSString *key in dic) { NSLog(@"%@", dic[key]); } } } // 稍微麻烦一点的就是字典里嵌套数组了,遍历的时候forin里循环变量要写key的NSString类型,然后在里边通过key找到对应value存放的新定义的数组中,再进行下一步forin
// 定义三个书的字典 NSMutableDictionary *book1 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"三国演义",@"name",@"100",@"price",nil]; NSMutableDictionary *book2 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"水浒传",@"name",@"200",@"price",nil]; NSMutableDictionary *book3 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"西游记",@"name",@"300",@"price",nil]; NSMutableDictionary *book4 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"红楼梦",@"name",@"400",@"price",nil]; NSMutableDictionary *book5 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"金瓶梅",@"name",@"500",@"price",nil]; NSMutableArray *arr = [NSMutableArray arrayWithObjects:book1,book2,book3,book4,nil]; // 添加书籍 [arr addObject:book5]; // 删除书籍 [arr removeObject:book4]; // 按照书名更改价格 for (NSDictionary *dic in arr) { if ([dic[@"name"] isEqualToString:@"金瓶梅"]) { [dic setValue:@"600" forKey:@"price"]; } } for (NSMutableDictionary *dic in arr) { for (NSString *temp in dic) { NSLog(@"%@ = %@", temp, dic[temp]); } } NSLog(@"**************"); // 打印所有书籍 for (NSMutableDictionary *dic in arr) { for (NSInteger i = 0; i < dic.count; i++) { NSLog(@"%@ = %@", dic.allKeys[i], dic.allValues[i]); } }
相关文章推荐
- C语言中.h和.c文件解析
- c++静态成员
- 变量的使用注意
- 变量的内存分析
- C语言数据类型总结
- java 使用JNI调用C语言
- 黑马程序员-ios学习笔记 c语言 结构体
- IOS开发学习记录第3天之C语言学习
- 学艺不精而羞愧--论C++模板类的使用
- C++ outline and interview questions (1): Variable
- 《C++编程思想》(第二版)第3章 C++中的C(笔记、习题及答案)(一)
- IMMEDIATE DECODABILITY
- Phone List(trie树)
- 我的c++服务器记录----非阻塞下的socket读取操作
- Babelfish
- 先序遍历创建二叉树,对二叉树统计叶子节点个数和统计深度(创建二叉树时#代表空树,序列不能有误)c语言
- Shortest Prefixes
- 第三天学习笔记2
- C++静态库与动态库
- C++语言使用字符数组实现大数加减乘除运算