/**

*  字典

存放键值对类型的数据

存放数据是无序的

*/

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

// 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. php和egret的配合

    egret对资源路径和js的应用都是相对路径,而在现在许多流行的框架里,一般都把js和资源放到专门的文件夹下,如public. 修改步骤: 1.修改index.html,改为全路径,如: <sc ...

  2. 转iOS中delegate、protocol的关系

    iOS中delegate.protocol的关系 分类: iOS Development2014-02-12 10:47 277人阅读 评论(0) 收藏 举报 delegateiosprocotolc ...

  3. 如何编写Angular指令

    [20140917]Angular:如何编写一个指令 *:first-child { margin-top: 0 !important; } body>*:last-child { margin ...

  4. DDD:Can I DDD?

    下面是<实现领域驱动>的作者给出的一段话: You can implement DDD if you have: A passion for creating excellent soft ...

  5. 鼠标经过(hover)事件的延时处理

    关于鼠标hover事件及延时 鼠标经过事件为web页面上最常见的事件之一.简单的hover可以用CSS :hover伪类实现,复杂点的用js. 一般情况下,我们是不对鼠标hover事件进行延时处理.但 ...

  6. 前端引擎初步设计稿 -通过配置生成动态页面 ,LandaSugar平台 .NET-C#-MVC

    公司准备开发出一款项目开发平台 LandaSugar,分为 前端引擎.工作引擎.数据引擎 三大块,开发人员只需要对三大模块进行相应的配置便能够完成一个定制项目的开发. 听起来貌似是异想天开,但是是否真 ...

  7. 【Spark】----Spark on Yarn

    最近从Hadoop 1.x 转到Hadoop 2.x 同时将一些java 程序转为Scala的程序将平台上的代码减少了很多,在实施的过程中,开到一些Spark相关的YARN的部署上都是基于之前的Had ...

  8. SCRUM项目 4.0

    4.0----------------------------------------------- 1.准备看板. 形式参考图4. 2.任务认领,并把认领人标注在看板上的任务标签上. 先由个人主动领 ...

  9. 新学C#线程使用总结

    这两天在项目上需要使用多线程技术,研究了半天,碰到了一些问题,现在简要总结下. 线程的使用其实很简单,和JAVA里面差不多,但是还是有很多特别的地方,在C#中的线程,如果要对非线程创建的控件进行操作的 ...

  10. 可访问性级别的C# 修饰符

    使用访问修饰符 public.protected.internal 或 private 可以为成员指定以下声明的访问级别之一. http://keleyi.com/a/bjad/3ccfqh95.ht ...