/**
* 字典
存放键值对类型的数据
存放数据是无序的
*/
// 字典在控制台输出是用{}包括起来的
// 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);