?
?
?
// 不可变字典
// 字典是适用于存放键值对的一种集合,里面的元素必须是对象类型
?
// 字典是无序的
?
// 字典赋值
NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"guozai",@"name",@"nan",@"sex",@"14",@"age" ,nil];
// 直接打印字典名就可以
NSLog(@"%@",dic);
?
// 取出来的键值都用NSString* 指向
NSString *age = [dic objectForKey:@"age"];
NSLog(@"%@",age);
NSString *nam = [dic objectForKey:@"name"];
NSLog(@"%@",nam);
// NSString * sex = [dic objectForKey:@"sex"];
NSLog(@"%@",[dic objectForKey:@"sex"]);
?
// 获取所有的key值
NSArray * keys = [dic allKeys];
//直接打印数组名
NSLog(@"%@",keys);
?
// 获取所有的value值
NSArray * objects = [dic allValues];
NSLog(@"%@",objects);
?
?
?
//=========================================================
// 可变字典
?
// 根据已有字典创建新字典
NSMutableDictionary *mulDic = [NSMutableDictionary dictionaryWithDictionary:dic];
?
// 添加键值对 score->100
[mulDic setObject:@"100" forKey:@"score"];
NSLog(@"%@",mulDic);
?
// 删除键值对sex->nan
[mulDic removeObjectForKey:@"sex"];
NSLog(@"%@",mulDic);
?
// 修改键值对的值,其实就是添加的方法设置就行
[mulDic setObject:@"13" forKey:@"age"];
NSLog(@"%@",mulDic);
//================================================
// 遍历字典
?
NSArray * allkeys = [mulDic allKeys];
for (int i = 0; i < [allkeys count]; i ++) {
// 获取下标对应的key
NSString * key = [allkeys objectAtIndex:i];
// 根据key获取value
NSString * value = [mulDic objectForKey:key];
NSLog(@"%@",value);
}
?
// 或则直接用allvalue方法取出所有value
NSArray * allValue = [mulDic allValues];
for (int i = 0; i < [mulDic count]; i ++) {
NSLog(@"%@",[allValue objectAtIndex:i]);
}
?
/*
1字典是适用于存放键值对的一种集合,里面的元素必须是对象类型,
2字典里面的key时唯一的,不能重复,但是value是可以重复的
3字典是一种无序集合,键值对顺序不确定,可以将字典理解成“下标是字符串的数组”
4字典通过key去值,设置值,修改值.遍历时,可以先便利所有的key,然后根据key值遍历value,或者直接通过allvalue方法遍历所有的值。
*/
?
?
//==============================================================
// NSSet 集合
?
// 使用便利构造器定义set
NSSet *set = [NSSet setWithObjects:@"guozai",@"zaigguo",@"guoguo", nil];
// 使用初始化方法定义set
NSSet *set2 = [[NSSet alloc]initWithObjects:@"guozai",@"zaiguo",@"guoguo", nil];
?
NSLog(@"%@,%@",set,set2);
?
// 获取所有元素,并打印
NSArray * sets = [set allObjects];
NSLog(@"%@",sets);
?
for (int i = 0; i < [sets count]; i ++) {
NSLog(@"%@",[sets objectAtIndex:i]);
}
?
// 获取set中任意一个元素
?
NSString *str = [set anyObject];// anyObject方法并不保证随机,一般都是第一个 元素
NSLog(@"%@",str);
?
// 判断集合中是否包含某个元素
BOOL re = [set containsObject:@"guozai"];
if (re) {
NSLog(@"baohan");
}
else {
NSLog(@"bubaohan");
}
?
//========================================================
// NSMutableSet
?
// 根据已有集合创建新的集合
NSMutableSet * mulSet = [NSMutableSet setWithSet:set];
?
// 添加元素
[mulSet addObject:@"zaizai"];
NSLog(@"%@",mulSet);
?
// 删除元素
[mulSet removeObject:@"zaizai"];
NSLog(@"%@",mulSet);
?
// ===================================================
?
// NSCountedSet 是NSMutableSet的子类,可用来计算重复次数
NSCountedSet *countedSet = [NSCountedSet setWithSet:mulSet];
[countedSet addObject:@"guozai"];
NSUInteger count = [countedSet countForObject:@"guozai"];
NSLog(@"%ld",count);
?
// ===================================================
// 在使用快速枚举遍历集合中的元素时,不能对集合里面的元素进行增删操作,否则会崩溃
?
// 数组的快速枚举
NSMutableArray * arr = [NSMutableArray arrayWithObjects:@"1",@"2",@"3", nil];
for (NSString *str in arr) {
NSLog(@"%@",str);
// 不能增删
}
?
// 字典的快速枚举
NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"guozai",@"name",@"man",@"