OC中NSDictionary和NSSet简单操作
/**
* 字典
存放键值对类型的数据
存放数据是无序的
*/
// 字典在控制台输出是用{}包括起来的
// 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简单操作的更多相关文章
- Linux 中 Vi 编辑器的简单操作
Linux 中 Vi 编辑器的简单操作 Vi 编辑器一共有3种模式:命名模式(默认),尾行模式,编辑模式.3种模式彼此需要切换. 一.进入 Vi 编辑器的的命令 vi filename //打开或新 ...
- Oracle中对XMLType的简单操作(extract、extractvalue...)
Oracle中对XMLType的简单操作(extract.extractvalue...) 1.下面先创建一个名未test.xml的配置文件. <?xml version="1. ...
- Python中关于csv的简单操作
Python中关于csv的简单操作 CSV操作简单,直接import csv即可, 主要使用reader和pandas 1 reader的简单使用 csv.reader("1.csv&quo ...
- OC中NSDictionary(字典)、NSMutableDictionary(可变字典)、NSSet(集合)、NSMutableSet(可变集合)得常用方法
字典用于保存具有映射关系数据的集合 一个key—value对认为是一个条目(entry),字典是存储key—value对的容器 与数组不同,字典靠key存取元素 key不能重复,value必须是对象 ...
- Java中对session的简单操作
1.jsp中操作session <% String name=(String)request.getSession().getAttribute("username"); / ...
- Oracle中对XMLType的简单操作(extract、extractvalue)
前几天一直在做Oracle对XMLType字段的操作,我还不是Oracle大拿,到网上找了很多资料,但是很多就是单一功能的介绍,不能很好的解决问题,现在在这里总结下. 1.下面先创建一个名未test. ...
- C#中日期时间的简单操作
(1).比较2个DateTime的大小 DateTime dt1 = Convert.ToDateTime("2010/11/25 20:53:43"); DateTime dt2 ...
- MYSQL中有关表的简单操作
#创建表 CREATE TABLE table02( tid INT, tname VARCHAR(20)); #查看所有表SHOW TABLES; #查看表的结构DESC table01; #修改表 ...
- MYSQL中有关数据库的简单操作
#创建数据库CREATE DATABASE day01; #查询所有数据库SHOW DATABASES; #查看某个数据库定义信息SHOW CREATE DATABASE day01; #查询正在使用 ...
随机推荐
- SNF开发平台WinForm之三-开发-单表选择控件创建-SNF快速开发平台3.3-Spring.Net.Framework
3.1运行效果: 3.2开发实现: 3.2.1 这个开发与第一个开发操作步骤是一致的,不同之处就是在生成完代码之后,留下如下圈红程序,其它删除. 第一个开发地址:开发-单表表格编辑管理页面 http: ...
- 轻量级linux CRUX安装笔记
感谢hrdd的分享,原文出处:http://wxdhrdd.blog.163.com/blog/static/120500564200952592240867/ 以下是对原文进行补充 crux的安装: ...
- Mount NAS Storage in Linux Overview 转载
Mount NAS Storage in Linux Overview Mounting your NAS Storage to a device that runs on a Linux-based ...
- Hadoop第4周练习—HDFS读写文件操作
1 运行环境说明... 3 :编译并运行<权威指南>中的例3.2. 3 内容... 3 2.3.1 创建代码目录... 4 2.3.2 建立例子文件上传到hdfs中... 4 ...
- .NET ORM 哪家强
ORM到底哪家强? 很多人都想知道这个问题,自已也没测试过,只能道听途说. 闲的无聊就将几个ORM拿出来比一比,假如怀疑测试代码有问题可以将它下载下来慢慢研究. 参赛ORM 1.SqlSugar:是一 ...
- Github教程(3)
Pull Request Pull Request 是自己修改源代码后,请求对方仓库采纳该修改时采取的一种行为. 场景1: 用户A在fork完用户B的项目时,A修改了代码并提交了一个Pull Requ ...
- 浏览器 UserAgent 相关知识整理
总结整理时下流行的浏览器User-Agent大全 浏览器userAgent大全 各种浏览器UserAgent一览表(桌面+移动) 使用JS判断移动设备的终端类型(浏览器UserAgent) JS通过分 ...
- Winform调用QQ发信息并且开机启动 (开源)
前言 公司CS系统需要加入启动qq从winform调用qq聊天窗口的功能,前提是需要将聊天者的QQ号码作为参数传递到函数中,一直没有搞过,正好很感兴趣,就折腾,Winform调用qq,我想肯定是需要一 ...
- ActiveReports 报表应用教程 (9)---交互式报表之动态排序
在 ActiveReports 中除了提供对数据源进行排序的功能之外,还提供了最终用户排序功能,最终用户可以对报表进行区域内排序和整个数据源排序,结合数据钻取.过滤等功能可以让用户更方便地分析报表数据 ...
- Studio for Winforms FlexGrid: 创建分类汇总
C1FlexGrid.Subtotal方法可以增加包含普通(非小计)行的汇总数据的分类汇总行. 分类汇总支持分层聚合.例如,如果你的表格包含销售数据,你可能会通过产品.地区和推销员来小计一下以得出总的 ...