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);

时间: 2024-10-14 04:27:27

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

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

字典用于保存具有映射关系数据的集合 一个key—value对认为是一个条目(entry),字典是存储key—value对的容器 与数组不同,字典靠key存取元素 key不能重复,value必须是对象 键值对在字典中是无序存储的 字典分:不可变字典(NSDictionary)和可变字典(NSMutableDictionary) 不可变字典一旦创建,键值对就不可更改,不可添加,不可删除,仅能读取key或者value 常用方法有: 1.创建字典对象 2.获取所有key值,获取所有value值 3.通过

OC中的集合NSSet

1 集合NSSet(无序) 2 本质上是哈希表,采用散列算法来查找 3 每个元素只有一次,元素是无序的 4 5 创建 每个元素可以是任意的对象 6 NSSet *set=[[NSSet alloc] initWithObjects:@"one",@"two", 7 @"three",@"four",nil]; 8 NSSet *set2=[[NSSet alloc] initWithObjects:@"one&quo

对设备描述表中路径层的简单操作

设备描述表中还有一个路径层.路径层就是在客户区上划定界线,界线之内的是各自的地盘.在MFC中,利用CDC类的BeginPath在设备描述表中打开一个路径层,然后利用图形设备借口(GDI)提供的绘图函数进行绘图操作,绘制完成后使用EndPath关闭这个路径层. 裁剪区域:可以把它理解为一个绘图区域,大小可以由我们来控制.对单文档应用程序来说,通常把客户区看做一个大的裁剪区域,但裁剪区域也可以局限于客户区中一个很小的范围之内. CDC类提供一个SelectClipPath函数,其作用是把当前设置的路

Ubuntu中安装MySql与简单操作

ubuntu上安装mysql非常简单只需要几条命令就可以了 sudo apt-get install mysql-server apt-get isntall mysql-client sudo apt-get install libmysqlclient-dev 安装完成之后可以使用如下命令来检查是否安装成功: sudo netstat -tap | grep mysql 通过上述命令检查之后,如果看到有mysql 的socket处于 listen 状态则表示安装成功. 登陆mysql数据库可

Linux 中 Vi 编辑器的简单操作

Vi 编辑器一共有3种模式:命名模式(默认),尾行模式,编辑模式.3种模式彼此需要切换. 一.进入 Vi 编辑器的的命令 vi  filename //打开或新建文件,并将光标置于第一行首 vi  +n  filename //打开文件,并将光标置于第n行首 vi  +  filename //打开文件,并将光标置于最后一行首 vi  +/pattern  filename //打开文件,并将光标置于第一个与 pattern 匹配处 vi  -r  filename //在上次使用 vi 编辑时

MYSQL中有关表的简单操作

#创建表 CREATE TABLE table02( tid INT, tname VARCHAR(20)); #查看所有表SHOW TABLES; #查看表的结构DESC table01; #修改表名RENAME TABLE table02 TO table002; #删除表DROP TABLE table002; 原文地址:https://www.cnblogs.com/YLTzxzy/p/10997014.html

OC中的NSDate日期类和Foundation框架中的结构体相关操作

一:NSDate NSDate可以?用来表?示时间,可以进?行?一些常见的?日期\时间处理 • ?一个NSDate对象就代表?一个时间• [NSDate date]返回的就是当前时间 1)日期对象的格式化操作 // 1,获取当前时间 // NSDate *date = [NSDate date]; // NSLog(@"date = %@", date); // // // 格式化输出时间 //// y : 年 //// // M : 月 //// // d : 日 //// // h

(转载)OC学习篇之---文件的操作

前一篇文章中我们讲到了OC中的归档和解档操作,今天我们来介绍OC中文件操作,在之前的文章中,已经接触到了文件的创建了,但是那不是很具体和详细,这篇文章我们就来仔细看一下OC中是如何操作文件的: 第一.首先来看一下本身NSString类给我们提供了哪些可以操作文件路径名的方法 1 // 2 // main.m 3 // 37_FilePathHandle 4 // 5 // Created by jiangwei on 14-10-13. 6 // Copyright (c) 2014年 jian

OC中的NSArray和NSMutableArray、NSDictionary和NSMutableDictionary用法

一:NSArray 和NSMutableArray 1: NSArray:不可变数组 NSArray是OC中使用的数组,只能用来存放OC对象,不能存放非OC对象如基本数据类型 它使不可变的,一旦初始化完毕,内容不能改变,也不能添加元素. 而C语言中的数组只能存放一种数据类型 (1) 普通数组的用法 // 普通数组的创建 // int arr[5] = {1,3,4}; // 对象数组的创建 // Person *p = [[Person alloc] init]; // Person *arrP