/**

*  字典

存放键值对类型的数据

存放数据是无序的

*/

// 字典在控制台输出是用{}包括起来的

// NSDictionary 不可变字典

// 1.创建对象

// 初始化方法

NSDictionary *dict1 = [[NSDictionary alloc] initWithObjectsAndKeys:@"zhizunbao", @"name", @"man", @"sex", @27, @"age", nil];

NSLog(@"%@", dict1);

NSDictionary *dict2 = [[NSDictionary alloc] initWithObjects:@[@"yinhao", @"man", @27] forKeys:@[@"name", @"sex", @"age"]];

NSLog(@"%@", dict2);

// 类方法

NSDictionary *dict3 = [NSDictionary dictionaryWithObjectsAndKeys:@"LeBron", @"name", @"man", @"sex", @31, @"age", nil];

NSLog(@"%@", dict3);

// 字面量方法

NSDictionary *dict4 = @{

@"name"  : @"LeBron",

@"sex"   : @"man",

@"age"   : @32,

@"hobby" : @"basketball",

};

NSLog(@"%@", dict4);

// 2.查找

// 根据key查找object

NSString *string1 = [dict4 objectForKey:@"name"];

NSLog(@"%@", string1);

// 下标法

NSLog(@"%@", dict4[@"name"]);  //两种方法一样的

// 3.获取字典的长度

NSLog(@"%lu", [dict4 count]);

NSLog(@"%lu", dict4.count);

// NSMutableDictionary 可变字典

// 字典中的key是唯一的,如果用set方法添加一个与字典中的key同名的元素,会替换里面的value,也就是修改,如果字典中没有与key同名的元素,则会添加;

// 1.创建对象(因为是NSDictionary的子类,所以NSDictionary有的方法,NSMutableDictionary都有)

// 可以创建一个空的可变字典

NSMutableDictionary *mDict1 = [NSMutableDictionary dictionaryWithCapacity:4];

// 当然也可以根据已有的字典来创建

NSMutableDictionary *mDict2 = [NSMutableDictionary dictionaryWithDictionary:dict4];

NSLog(@"%@", mDict2);

// 2.添加,修改键值对

[mDict1 addEntriesFromDictionary:@{@"height" : @"203", @"weight" : @"250"}];

NSLog(@"%@", mDict1);

[mDict2 setObject:@"203" forKey:@"height"];

NSLog(@"%@", mDict2);

[mDict2 setValue:@"America" forKey:@"address"];

NSLog(@"%@", mDict2);

/*

setValue: forKey: 的key参数类型必须是NSString *类型的,是NSObject对象的方法,也就是说所有的OC对象都有这个方法

setObject: forKey: 的key参数类型可以是任意类型的对象,是NSMutableDictionary类中特有的方法

*/

// 3.删除

// 根据key删除

[mDict2 removeObjectForKey:@"name"];

// 根据多个key删除

[mDict2 removeObjectsForKeys:@[@"hobby", @"height"]];

// 删除全部

[mDict2 removeAllObjects];

NSLog(@"%@", mDict2);

/**

*  NSSet 不可变集合(元素不可以重复,如果存在多个,则只会输出一个,并且无序存放)

*/

// 创建一个set对象

NSSet *set1 = [NSSet setWithObjects:@"genie", @"weizhuang", @"tianming", @"shaoyu", nil];

NSLog(@"%@", set1);

// 任意取出一个元素(并不是随机)

NSString *str = [set1 anyObject];

NSLog(@"%@", str);

// 取出所有元素

NSArray *sArray = [set1 allObjects];

NSLog(@"%@", sArray);

// 获取集合中元素个数

NSLog(@"%lu", set1.count);

// 判断对象是否在集合中

BOOL isHasShaoyu = [set1 containsObject:@"shaoyu"];

NSLog(@"%d", isHasShaoyu);

// NSMutableSet 可变集合

// 创建对象

NSMutableSet *mSet1 = [NSMutableSet setWithObjects:@"genie", @"weizhuang", @"tianming", @"shaoyu", nil];

NSLog(@"%@", mSet1);

// 添加对象

[mSet1 addObject:@"gaoyue"];

NSLog(@"%@", mSet1);

// 删除对象

[mSet1 removeObject:@"shaoyu"];

NSLog(@"%@", mSet1);

OC中NSDictionary和NSSet简单操作的更多相关文章

  1. Linux 中 Vi 编辑器的简单操作

    Linux 中 Vi 编辑器的简单操作 Vi 编辑器一共有3种模式:命名模式(默认),尾行模式,编辑模式.3种模式彼此需要切换. 一.进入 Vi 编辑器的的命令 vi  filename //打开或新 ...

  2. Oracle中对XMLType的简单操作(extract、extractvalue...)

    Oracle中对XMLType的简单操作(extract.extractvalue...)    1.下面先创建一个名未test.xml的配置文件. <?xml version="1. ...

  3. Python中关于csv的简单操作

    Python中关于csv的简单操作 CSV操作简单,直接import csv即可, 主要使用reader和pandas 1 reader的简单使用 csv.reader("1.csv&quo ...

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

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

  5. Java中对session的简单操作

    1.jsp中操作session <% String name=(String)request.getSession().getAttribute("username"); / ...

  6. Oracle中对XMLType的简单操作(extract、extractvalue)

    前几天一直在做Oracle对XMLType字段的操作,我还不是Oracle大拿,到网上找了很多资料,但是很多就是单一功能的介绍,不能很好的解决问题,现在在这里总结下. 1.下面先创建一个名未test. ...

  7. C#中日期时间的简单操作

    (1).比较2个DateTime的大小 DateTime dt1 = Convert.ToDateTime("2010/11/25 20:53:43"); DateTime dt2 ...

  8. MYSQL中有关表的简单操作

    #创建表 CREATE TABLE table02( tid INT, tname VARCHAR(20)); #查看所有表SHOW TABLES; #查看表的结构DESC table01; #修改表 ...

  9. MYSQL中有关数据库的简单操作

    #创建数据库CREATE DATABASE day01; #查询所有数据库SHOW DATABASES; #查看某个数据库定义信息SHOW CREATE DATABASE day01; #查询正在使用 ...

随机推荐

  1. Webkit CSS properties

    Webkit CSS properties -webkit-animation -webkit-animation-delay -webkit-animation-direction -webkit- ...

  2. client/scroll/offset width/height/top/left ---记第一篇博客

    client/scroll/offset width/height/top/left (盒模型为contentBox,定位原点是元素左上角边框最外层的交点) clientWidth  width+左p ...

  3. 解决msgfmt无法使用的问题

    参考: http://blog.sina.com.cn/s/blog_4fb490ff0100csne.html http://linux.die.net/man/1/msgfmt http://pa ...

  4. Android 学习笔记之Volley开源框架解析(二)

    PS:Volley已经学完,可以安心的写一下博客总结一下了... 学习内容: 1.Request的完整封装... 2.RetryPolicy,DefaultRetryPolicy(请求重试策略源码解析 ...

  5. P6 EPPM Manual Installation Guide (Oracle Database)

    P6 EPPM Manual Installation Guide (Oracle Database) P6 EPPM Manual Installation Guide (Oracle Databa ...

  6. 【EF 译文系列】重试执行策略的局限性(EF 版本至少为 6)

    原文链接:Limitations with Retrying Execution Strategies (EF6 onwards) 当使用重试执行策略的时候,大体有以下两种局限性: 不支持以流的方式进 ...

  7. MVC编辑状态两个DropDownList联动

    前几天使用jQuery在MVC应用程序中,实现了<jQuery实现两个DropDownList联动(MVC)>http://www.cnblogs.com/insus/p/3414480. ...

  8. WPF 竖排文字

    ---恢复内容开始--- 想做一个WPF 文字竖排 类似上图.用在TabItem的header上面. <TextBlock FontSize="30" Text=" ...

  9. 客户端(Winform窗体)上传文件到服务器(web窗体)简单例子

    客户端:先创建一个winform窗体的应用程序项目 项目结构

  10. 树的统计Count---树链剖分

    NEFU专项训练十和十一——树链剖分 Description 一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w.我们将以下面的形式来要求你对这棵树完成一些操作: I. CHANGE u t ...