1.NSDictionar基本概念

  • 什么是NSDictionary

    • NSDictionary翻译过来叫做”字典”
    • 日常生活中,“字典”的作用:通过一个拼音或者汉字,就能找到对应的详细解释
    • NSDictionary的作用类似:通过一个key,就能找到对应的value
    • NSDictionary是不可变的, 一旦初始化完毕, 里面的内容就无法修改

2.NSDictionary的创建

+ (instancetype)dictionary;
+ (instancetype)dictionaryWithObject:(id)object forKey:(id <NSCopying>)key;
+ (instancetype)dictionaryWithObjectsAndKeys:(id)firstObject, ...;
+ (id)dictionaryWithContentsOfFile:(NSString *)path;
+ (id)dictionaryWithContentsOfURL:(NSURL *)url;
  • NSDictionary创建简写

   以前

NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"lnj", @"name", @"12345678", @"phone", @"天朝", @"address", nil];

   现在

NSDictionary *dict = @{@"name":@"lnj", @"phone":@"12345678", @"address":@"天朝"};
  • NSDictionary获取元素简写

   以前

[dict objectForKey:@"name”];

   现在

dict[@"name”];
  • 键值对集合的特点
  1. 字典存储的时候,必须是"键值对"的方式来存储(同时键不要重复)
  2. 键值对中存储的数据是"无序的".
  3. 键值对集合可以根据键, 快速获取数据.

3.NSDictionary的遍历

  • - (NSUInteger)count;

    • 返回字典的键值对数目
  • - (id)objectForKey:(id)aKey;

    • 根据key取出value
  • 快速遍历
    NSDictionary *dict = @{@"name":@"lnj", @"phone":@"12345678", @"address":@"天朝"};
for (NSString *key in dict) {
NSLog(@"key = %@, value = %@", key, dict[key]);
}
  • Block遍历
   [dict enumerateKeysAndObjectsUsingBlock:^(NSString *key, NSString *obj, BOOL *stop) {
NSLog(@"key = %@, value = %@", key, obj);
}];

4.NSDictionary文件操作

  • 将字典写入文件中

    • - (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile;
    • - (BOOL)writeToURL:(NSURL *)url atomically:(BOOL)atomically;
    • 存结果是xml文件格式,但苹果官方推荐为plist后缀。
  • 示例

    NSDictionary *dict = @{@"name":@"lnj", @"phone":@"12345678", @"address":@"天朝"};
BOOL flag = [dict writeToFile:@"/Users/LNJ/Desktop/dict.plist" atomically:YES];
NSLog(@"flag = %i", flag);
  • 从文件中读取字典
NSDictionary *newDict = [NSDictionary dictionaryWithContentsOfFile:@"/Users/LNJ/Desktop/dict.plist"];
NSLog(@"newDict = %@", newDict);

最新文章

  1. 【java消息格式化】使用MessageFormat进行消息格式化
  2. KS8U读卡器
  3. [.NET] 使用C#开发SQL Function来提供数据 - 天气预报
  4. python(3)-深浅拷贝
  5. Ajax--xml格式及注意事项
  6. Spring MVC+JSP实现三级联动
  7. openfire插件开发的几点说明
  8. 201521123060 《Java程序设计》第7周学习总结
  9. webpack 入门指南
  10. JavaScript基础知识(概念、常量和变量)
  11. HDU 4526 拼车记
  12. [Swift]LeetCode900. RLE 迭代器 | RLE Iterator
  13. KEIL_MDK生成Bin文件
  14. [Git] 拉开发分支的代码报错
  15. 二十二:制作app的时候超出部分不能滑动
  16. linux基本
  17. 解决“UnicodeEncodeError: &#39;gbk&#39; codec can&#39;t encode character u&#39;\xa9&#39; in position 24051: illegal multibyte sequence”错误
  18. WEB开发库收集
  19. ELK环境配置
  20. github上打包的样式为什么在预览的时候,出现404

热门文章

  1. Java Swing 如何设置图片大小
  2. Storm集群安装Version1.0.1开启Kerberos
  3. 前端后端通信初步尝试(javascript - flask)
  4. python + pymysql连接数据库报“(2003, &quot;Can&#39;t connect to MySQL server on &#39;XXX数据库地址&#39; (timed out)&quot;)”
  5. linux系统安装python3和pip
  6. mysql yum无法安装的原因
  7. vue 多级路由嵌套后打开页面是空白
  8. &#39;:app@debug/compileClasspath&#39;: Could not find any version that matches com.android.support:appcompat-v7:30.+.
  9. win10 防火墙配置 允许局域网其他设备访问本地工程
  10. 【Android】安卓四大组件之Activity(一)