OC中NSDictionary和NSSet简单操作

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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简单操作的主要内容,如果未能解决你的问题,请参考以下文章

OC Foundation 集合简述

OC学习13——Foundation框架中的集合

OC基础--常用类的初步介绍与简单实用之集合类

iOS开发-OC篇-NSSet,NSNumber

NSDictionary  NSSet和NSArray的区别

[转]一些NSArray,NSDictionary,NSSet相关的算法知识