1、NSDictionary、NSMutableDictionary

可以理解为java里面的map,一个key对应一个value,key不可以重复

NSDictionary不可变,NSMutableDictionary可变

NSMutableDictionary比NSDictionary多了一些增加,删除,修改的函数

比如setObject:forKey:  removeObjectForKey:

2、测试Demo

NSDictionary+print.h

#import <Foundation/Foundation.h>#ifndef NSDictionary_print_h
#define NSDictionary_print_h
@interface NSDictionary (print)
-(void)print;
@end#endif /* NSDictionary_print_h */

NSDictionary+print.m

#import <Foundation/Foundation.h>
#import "NSDictionary+print.h"@implementation NSDictionary(print)
-(void)print
{NSMutableString *result = [NSMutableString stringWithFormat:@"{"];for (id key in self){[result appendString:[key description]];[result appendString:@"="];[result appendString:[self[key] description]];[result appendString:@", "];}[result appendString:@"}"];NSLog(@"%@", result);
}
@end

main.m

#import "NSDictionary+print.h"int main(int argc, char * argv[]) {@autoreleasepool {NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"chenyu1", @"1", @"chenyu2", @"2", @"chenyu3", @"3", @"chenyu4", @"4", @"chenyu5", @"5",nil];[dict print];NSLog(@"dict有%ld个key-value", [dict count]);NSLog(@"key is 2 value is %@", [dict[@"2"] description]);NSLog(@"key is 2 value is %@", [dict objectForKey:@"2"]);NSLog(@"dict 所有的key是:%@", [dict allKeys]);NSEnumerator *en = [dict objectEnumerator];id obj;//遍历valuewhile (obj = [en nextObject]){NSLog(@"%@", obj);}[dict enumerateKeysAndObjectsUsingBlock:^(id  _Nonnull key, id  _Nonnull obj, BOOL * _Nonnull stop) {NSLog(@"key的值为:%@", key);NSLog(@"value的值为:%@", obj);}];NSMutableDictionary *muDict = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"chenyu1", @"1", @"chenyu2", @"2", @"chenyu3", @"3", @"chenyu4", @"4", @"chenyu5", @"5",nil];[muDict print];[muDict setObject:@"chen6" forKey:@"6"];[muDict setObject:@"chen6" forKey:@"3"];[muDict print];[muDict removeObjectForKey:@"1"];[muDict print];}
}

3、运行结果

2018-07-19 23:40:03.444261+0800 cyTest[67110:13778920] {3=chenyu3, 1=chenyu1, 4=chenyu4, 2=chenyu2, 5=chenyu5, }
2018-07-19 23:40:03.446141+0800 cyTest[67110:13778920] dict有5个key-value
2018-07-19 23:40:03.446320+0800 cyTest[67110:13778920] key is 2 value is chenyu2
2018-07-19 23:40:03.446681+0800 cyTest[67110:13778920] key is 2 value is chenyu2
2018-07-19 23:40:03.446972+0800 cyTest[67110:13778920] dict 所有的key是:(3,1,4,2,5
)
2018-07-19 23:40:03.447145+0800 cyTest[67110:13778920] chenyu3
2018-07-19 23:40:03.447340+0800 cyTest[67110:13778920] chenyu1
2018-07-19 23:40:03.447447+0800 cyTest[67110:13778920] chenyu4
2018-07-19 23:40:03.447578+0800 cyTest[67110:13778920] chenyu2
2018-07-19 23:40:03.447690+0800 cyTest[67110:13778920] chenyu5
2018-07-19 23:40:03.448208+0800 cyTest[67110:13778920] key的值为:3
2018-07-19 23:40:03.448322+0800 cyTest[67110:13778920] value的值为:chenyu3
2018-07-19 23:40:03.448422+0800 cyTest[67110:13778920] key的值为:1
2018-07-19 23:40:03.448515+0800 cyTest[67110:13778920] value的值为:chenyu1
2018-07-19 23:40:03.448613+0800 cyTest[67110:13778920] key的值为:4
2018-07-19 23:40:03.466511+0800 cyTest[67110:13778920] value的值为:chenyu4
2018-07-19 23:40:03.466823+0800 cyTest[67110:13778920] key的值为:2
2018-07-19 23:40:03.466983+0800 cyTest[67110:13778920] value的值为:chenyu2
2018-07-19 23:40:03.467161+0800 cyTest[67110:13778920] key的值为:5
2018-07-19 23:40:03.467334+0800 cyTest[67110:13778920] value的值为:chenyu5
2018-07-19 23:40:03.467602+0800 cyTest[67110:13778920] {3=chenyu3, 1=chenyu1, 4=chenyu4, 2=chenyu2, 5=chenyu5, }
2018-07-19 23:40:03.467838+0800 cyTest[67110:13778920] {3=chen6, 1=chenyu1, 6=chen6, 4=chenyu4, 2=chenyu2, 5=chenyu5, }
2018-07-19 23:40:03.468030+0800 cyTest[67110:13778920] {3=chen6, 6=chen6, 4=chenyu4, 2=chenyu2, 5=chenyu5, }

IOS学习笔记二十一(NSDictionary、NSMutableDictionary)相关推荐

  1. python3.4学习笔记(二十一) python实现指定字符串补全空格、前面填充0的方法

    python3.4学习笔记(二十一) python实现指定字符串补全空格.前面填充0的方法 Python zfill()方法返回指定长度的字符串,原字符串右对齐,前面填充0. zfill()方法语法: ...

  2. Mr.J-- jQuery学习笔记(二十一)--模拟微博页面

    先看之前的节点操作方法:Mr.J-- jQuery学习笔记(二十)--节点操作方法 Mr.J-- jQuery学习笔记(五)--属性及属性节点 Mr.J-- jQuery学习笔记(十一)--事件委托  ...

  3. kvm虚拟化学习笔记(二十一)之KVM性能优化学习笔记

    本学习笔记系列都是采用CentOS6.x操作系统,KVM虚拟机的管理也是采用virsh方式,网上的很多的文章都基于ubuntu高版本内核下,KVM的一些新的特性支持更好,本文只是记录了CentOS6. ...

  4. IOS学习笔记二十三对象归档(NSKeyedArchiver、NSKeyedUnArchiver、NSCodeing)

    1.NSKeyedArchiver.NSKeyedUnArchiver 1).archiveRootObject:toFile 归档对象到这个路径文件 2).unarchiveObjectWithFi ...

  5. IOS学习笔记之十一(包装类、description、isequal)

    1.下面的类不是包装类 1).NSInteger(64位相对于long) 2).NSUInteger(64位相对于unsigned long) 3).CGFLoat(64位相对于double, 32位 ...

  6. linux驱动开发学习笔记二十一:异步通知

    一.异步通知简介 我们首先来回顾一下"中断",中断是处理器提供的一种异步机制,我们配置好中断以后就可以让处理器去处理其他的事情了,当中断发生以后会触发我们事先设置好的中断服务函数, ...

  7. 媒体查询配合rem使用(HTML+CSS学习笔记二十一)

    媒体查询 + rem 计算方法 计算rem方法: 结合媒体查询 -> 随着设备的改变 更改html font-size的值. ​ 媒体查询确定范围?? ​ 移动端设计图 : 640px 750p ...

  8. opencv学习笔记二十一:使用HSV颜色空间实现颜色识别

    一.颜色空间介绍        RGB 颜色空间是大家最熟悉的颜色空间,即三基色空间,任何一种颜色都可以由该三种 颜色混合而成.然而一般对颜色空间的图像进行有效处理都是在 HSV 空间进行的,HSV( ...

  9. IOS学习笔记二十NSSet和NSMutableSet

    1.NSSet.NSMutableSet NSSet元素无序.不能重复 NSMutableSet元素无序.不能重复,有一些向集合中增加元素的功能.删除元素....... 2.测试Demo int ma ...

最新文章

  1. 重启部署在Linux系统下的tomcat服务
  2. HDU 1086 You can Solve a Geometry Problem too
  3. python sip模块(为C和C++库创建Python绑定)
  4. 28 March 2019
  5. 833系列——二叉排序树
  6. 【VSTO】Office开发中遇到的兼容性检查问题
  7. 转译和编译_10个有趣又能编译为JavaScript的语言,你用过哪些?
  8. 爬虫-scrapy数据的持久化存储
  9. UVa 11992 (线段树 区间修改) Fast Matrix Operations
  10. 【registry】javax ValidationException: HV000183: Unable to load ‘javax.el.ExpressionFactory‘
  11. python改文件名_python 怎么改文件名
  12. 持续集成最佳实践_集成服务性能最佳实践–数据流优化
  13. js中采用词法作用域
  14. sqlplus无密码登录TNS协议适配器错误
  15. win7电脑网站服务器,Win7系统
  16. es服务器的cpu压力过大的调试
  17. python与开源gis空间分析_Python 与开源GIS:数据处理、空间分析与地图制图
  18. 《编译原理》画 DAG 图与求优化后的 4 元式代码- 例题解析
  19. 计算机毕业设计(附源码)python-志愿者管理系统
  20. Cannot attach the file 'C:\Users\raye\Documents\(LocalDB)\MSSQLLocalDB.mdf' as database 'D:\DIY\DMS-

热门文章

  1. 生活在任务栏的猫, CPU使用率越高它就跑的越快
  2. 微软 Ignite 大会 PowerBI 划重点
  3. .Net Core with 微服务 - Consul 注册中心
  4. 又一次Task.Wait引起的教训
  5. BenchmarkDotNet性能测试
  6. 在 .NET 6 Preview 3 ASP.NET Core 更新
  7. 在 .NET Core 5 中集成 Create React app
  8. WPF 动态更换图片路径
  9. 《ASP.NET Core 真机拆解》 送书活动结果公布
  10. 如何利用Gitlab-CI持续部署到远程机器?