/**

*  字典

存放键值对类型的数据

存放数据是无序的

*/

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

// 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. Entity Framework Code First ---EF Power Tool MySql

    关于如何使用EF Power Tool的介绍请看 http://www.cnblogs.com/LingzhiSun/archive/2011/05/24/EFPowerTool_1.html, 这里 ...

  2. [Math] Deferred Acceptance Algorithm

    约会配对问题 一.立即接受算法: 对于约会的配对,大家都去追自己最心仪的女生.而这个女生面对几位追求者,要立刻做个决定. 被拒绝的男生们调整一下心情,再去追求心中的 No. 2.以此类推. 这样做法有 ...

  3. [python]自问自答:python -m参数?

    python -m xxx.py 作用是:把xxx.py文件当做模块启动 但是我一直不明白当做模块启动到底有什么用.python xxx.py和python -m xxx.py有什么区别! 自问自答: ...

  4. notepad++ 各类插件学习记录

    js文件的规范格式排列: 插件里安装 jstools, 然后重启notepad++再去插件里面的jstool里面用jsformat就可以格式化排列不规则的js代码了 notepad++ 自动补全: 在 ...

  5. 15个私有云上的DevOps 开源工具

    本文由来:之前工作需要,在查找运维自动化资料时,发现了这篇文章的英文原版,觉得很不错.它综合的介绍了哪些工具,我们运维人员需要掌握,并且如何进行结合其它工具一起使用.给了一些指导性的意见.由于是英文的 ...

  6. 使用自带的JavaScriptSerializer序列化实体 指定的属性如何不序列化

    public class GridConfig { public string width = "100%"; public string source = "dataA ...

  7. ASP.NET 文件上传类 简单好用

    调用: UploadFile uf = new UploadFile(); /*可选参数*/ uf.SetIsUseOldFileName(true);//是否使用原始文件名作为新文件的文件名(默认: ...

  8. HTML--Table布局

    <DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" Content= ...

  9. Python基础:开篇

    一.概述 Python基础 是对 Python(2.7版本)基本语法的要点总结,主要参考了以下资料: Python核心编程(第二版) Learning Python (3rd Edition) Pyt ...

  10. Aspose.Word 操作word表格的行 插入行 添加行

    rows.insert或rows.add前row必须有单元格cell private void button3_Click(object sender, EventArgs e) {         ...