1. //
  2. // main.m
  3. // NSDictionary
  4. //
  5. //
  6.  
  7. #import <Foundation/Foundation.h>
  8.  
  9. int main(int argc, const char * argv[]) {
  10.  
  11. // 1.如何创建
  12. NSDictionary *dict1 = [NSDictionary dictionaryWithObject:@"lnj" forKey:@"name"];
  13. NSString *name1 = [dict1 objectForKey:@"name"];
  14. NSLog(@"name = %@", name1); //lnj
  15. NSLog(@"dict1 = %@", dict1); //dict1 = {name = lnj;}
  16.  
  17. // 注意: key和value 是一一对应
  18. NSDictionary *dict2 = [NSDictionary dictionaryWithObjects:@[@"lnj", @"", @"1.75"] forKeys:@[@"name", @"age", @"height"]];
  19. NSLog(@"dict2 = %@", dict2); //{age = 30;height = "1.75";name = lnj;}
  20.  
  21. NSLog(@"%@ %@ %@", [dict2 objectForKey:@"name"], [dict2 objectForKey:@"age"], [dict2 objectForKey:@"height"]);
  22.  
  23. //NSDictionary *dict3 = @{key:value};
  24. NSDictionary *dict4 = @{@"name": @"lnj"};
  25. NSLog(@"%@", dict4[@"name"]);
  26.  
  27. NSDictionary *dict5 = @{@"name":@"lnj", @"age":@"", @"height":@"1.75"};
  28. NSLog(@"dict5 = %@", dict5);//{age = 30;height = "1.75";name = lnj;}
  29. NSLog(@"%@ %@ %@", dict5[@"name"], dict5[@"age"], dict5[@"height"]);
  30.  
  31. // 2.字典的遍历
  32. NSDictionary *dict6 = @{@"name":@"lnj", @"age":@"", @"height":@"1.75"};
  33. // 2.1如何获取字典中key和value的个数, 在字典中key称之为键, value称之为值
  34. NSLog(@"count = %lu", [dict6 count]);
  35.  
  36. for (int i = ; i < dict6.count; ++i) {
  37. // 获取字典中所有的key
  38. NSArray *keys = [dict6 allKeys];
  39. // 取出当前位置对应的key
  40. NSLog(@"%@", keys[i]);
  41. NSString *key = keys[i];
  42. NSString *value = dict6[key];
  43. NSLog(@"key = %@, value = %@", key, value);
  44. }
  45.  
  46. // 如何通过forin遍历字典, 会将所有的key赋值给前面的obj
  47. for (NSString *key in dict6) {
  48. NSLog(@"%@", key);
  49. NSString *value = dict6[key];
  50. NSLog(@"key = %@, value = %@", key, value);
  51.  
  52. }
  53.  
  54. [dict6 enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
  55. NSLog(@"key = %@, value = %@", key, obj);
  56. }];
  57.  
  58. // 3.字典文件读写
  59. NSDictionary *dict7 = @{@"name":@"lnj", @"age":@"", @"height":@"1.75"};
  60. // XML 扩展名plist
  61. [dict7 writeToFile:@"/Users/mctc/Desktop/a.plist" atomically:YES];
  62.  
  63. // 注意: 字典和数组不同, 字典中保存的数据是无序的
  64. NSDictionary *newDict8 = [NSDictionary dictionaryWithContentsOfFile:@"/Users/mctc/Desktop/a.plist"];
  65. NSLog(@"%@", newDict8);// {age = 30;height = "1.75";name = lnj;}
  66.  
  67. NSArray *arr9 = @[@, @, @, @];
  68. [arr9 writeToFile:@"/Users/mctc/Desktop/a.plist" atomically:YES];
  69.  
  70. return ;
  71. }

oc75--不可变字典NSDictionary的更多相关文章

  1. OC中NSDictionary(字典)、NSMutableDictionary(可变字典)、NSSet(集合)、NSMutableSet(可变集合)得常用方法

    字典用于保存具有映射关系数据的集合 一个key—value对认为是一个条目(entry),字典是存储key—value对的容器 与数组不同,字典靠key存取元素 key不能重复,value必须是对象 ...

  2. NSDictionary字典创建,获取,遍历,可变字典的删除 - iOS

    字典是以键值对的形式来存储数据 key value 1 NSDictionary 字典 1.1 创建字典,不可变的 NSDictionary * dic = [NSDictionary diction ...

  3. 字典NSDictionary以及NSMutableDictionary的用法总结

    做过Java语言 或者 C语言 开发的朋友应该很清楚 关键字map 吧,它可以将数据以键值对儿的形式储存起来,取值的时候通过KEY就可以直接拿到对应的值,非常方便.在Objective-C语言中 词典 ...

  4. Foundation框架--字典( NSDictionary NSMutableDictionary )

    基础知识 1.字典不允许相同的key,但允许有相同的value. 2,字典是无序的,字典不能排序. 3.字典里的内容是成对存在的,不会出现单数. 4.快速创建的方式只适合不可变字典. 不可变字典 #i ...

  5. objective-c可变字典

     1 #pragma mark *****************************字典********************************  2 //        字典:通过ke ...

  6. iOS - 字典(NSDictionary)

    1. 字典类型的常用处理 //---------------不可变字典 //1.字典的创建 NSArray *array1 = [NSArray arrayWithObjects:@"zha ...

  7. OC基础 可变字典与不可变字典的使用

    OC基础 可变字典与不可变字典的使用 1.不可变字典 1.1创建不可变字典 //创建字典 //注意: //1,元素个数是偶数 //2,每两个元素是一个键值对 //3,值在前,键在后 NSDiction ...

  8. Objective-C 字典、可变字典

    字典相当于c++ stl中的map 字典NSDictionary #import <UIKit/UIKit.h> #import "AppDelegate.h" int ...

  9. iosOC不可变字典和可变字典

    //key 和 value 都属于(id)对象类型 //key常用字符串NSString来表示 //存储数值型 一般可用 NSString //int  age ->@(age) //  [di ...

随机推荐

  1. chr()返回值是当前整数对应的 ASCII 字符。

    #chr() 用一个范围在 range(256)内的(就是0-255)整数作参数,返回一个对应的字符.#返回值是当前整数对应的 ASCII 字符.1 import random input_m =10 ...

  2. Pytorch 加载保存模型【直播】2019 年县域农业大脑AI挑战赛---(三)保存结果

    在模型训练结束,结束后,通常是一个分割模型,输入 1024x1024 输出 4x1024x1024. 一种方法就是将整个图切块,然后每张预测,但是有个不好处就是可能在边界处断续. 由于这种切块再预测很 ...

  3. C++ 11常见功能介绍:auto,decltype,nullptr,for,lambda

    什么是C++11 C++11是曾经被叫做C++0x,是对目前C++语言的扩展和修正,C++11不仅包含核心语言的新机能,而且扩展了C++的标准程序库(STL),并入了大部分的C++ Technical ...

  4. 洛谷——P3919 【模板】可持久化数组(可持久化线段树/平衡树)

    P3919 [模板]可持久化数组(可持久化线段树/平衡树) 题目背景 UPDATE : 最后一个点时间空间已经放大 标题即题意 有了可持久化数组,便可以实现很多衍生的可持久化功能(例如:可持久化并查集 ...

  5. UVA - 820 Internet Bandwidth(最大流模板题)

    题目: 思路: 直接套最大流的模板就OK了,注意一下输出的格式. 代码: #include <bits/stdc++.h> #define inf 0x3f3f3f3f #define M ...

  6. Vue2.0如何实现父组件与子组件之间的事件发射与接收

    关于vue2.0的事件发射和接收,大家都知道$dispatch和$broadcast在vue2.0已经被弃用了,取而代之的是更加方便快捷的方式,使用事件中心,组件通过它来互相通信,不管组件在哪一个层都 ...

  7. 利用tempalte.js模版引擎渲染页面,作对应的数据处理

    需要启个服务 需引入jquery.js和template.js <!DOCTYPE html> <html lang="en"> <head> ...

  8. Leetcode 115.不同的子序列

    不同的子序列 给定一个字符串 S 和一个字符串 T,计算在 S 的子序列中 T 出现的个数. 一个字符串的一个子序列是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字符串.(例 ...

  9. [codeVS1404] 字符串匹配

    时间限制: 1 s 空间限制: 128000 KB 题目等级 : 大师 Master         题目描述 Description 给你两个串A,B,可以得到从A的任意位开始的子串和B匹配的长度. ...

  10. 做ssh框架整合的时候,遇到如下错误:AnnotationTransactionAttributeSource is only available on Java 1.5 and higher

    nested exception is java.lang.IllegalStateException: AnnotationTransactionAttributeSource is only av ...