/*
NSDictionary
作用:通过key值,访问value值
注意:key值和value值都是对象
键值对集合的特点:
1.key值重复的只能保存一个,并且是第一个。而NSMutableDictionary则是保存最后一个
2.根据key值找value值
3.键值对中存储的数据是无效的
NSMutableDictionary
NSDictionary创建的字典是不可变的,也就是不能惊醒增删修改,而NSMutableDictionary可以,而且他继承自NSDictionary
*/
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
{
@autoreleasepool {
//NSDictionary
//创建空字典
NSDictionary *dict1 = [NSDictionary dictionary];
NSLog(@"dict1 = %@",dict1);
//创建只有一对键值对的字典
NSDictionary *dict2 = [NSDictionary dictionaryWithObject:@"liuda" forKey:@"1"];
NSLog(@"dict2 = %@",dict2);
//创建有多个键值对的字典,如果出现相同的key值,那么第一个被保存,后面相同key值的不被保存
NSDictionary *dict3 = [NSDictionary dictionaryWithObjectsAndKeys:@"suner",@"2",@"zhangsan",@"3",@"lisi",@"4", nil];
NSLog(@"dict3 = %@",dict3);
//快速创建字典{。。key值:value值,。。。}
NSDictionary *dict4 = @{@"key1":@"value1",@"key2":@"value2"};
NSLog(@"dict4 = %@",dict4);
//NSDictionary的操作
//获取当前字典有多少对键值
NSLog(@"%lu",dict4.count);
//根据键值获取value值
NSString *str = [dict4 objectForKey:@"key2"];
NSLog(@"%@",str);
//遍历字典(第一步:获取所有的key值,第二步:根据key值,获取value值)
//第一种方法
NSLog(@"dict3 = %@",dict3);
for(NSString *key in dict3){
NSLog(@"%@ = %@",key,[dict3 objectForKey:key]);
}
//第二种方法(block)
[dict3 enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
NSLog(@"%@ = %@",key,obj);
}];
NSLog(@"Hello, World!");
//NSMutableDictionary
//创建空字典
NSMutableDictionary *ndic1 = [NSMutableDictionary dictionary];
NSLog(@"ndic1 = %@",ndic1);
//创建只含有一个键值对的字典
NSMutableDictionary *ndic2 = [NSMutableDictionary dictionaryWithObject:@"value1" forKey:@"key1"];
NSLog(@"ndic2 = %@",ndic2);
//创建有多个键值对的字典,如果出现相同的key值,那么第一个被保存,后面相同key值的不被保存
NSMutableDictionary *ndic3 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"value2",@"key2",@"value3",@"key3",@"value4",@"key4", nil];
NSLog(@"ndic3 = %@",ndic3);
//快速创建
NSMutableDictionary *ndic4 = @{@"key5":@"value5",@"key6":@"value6",@"key7":@"value7"};
NSLog(@"ndic4 = %@",ndic4);
//NSMutableDictionary的操作
//添加
[ndic1 setObject:@"zhuhoulin1" forKey:@"1"];
[ndic1 setObject:@"zhuhoulin2" forKey:@"2"];
[ndic1 setObject:@"zhuhoulin3" forKey:@"3"];
[ndic1 setObject:@"zhuhoulin4" forKey:@"1"];//setObject不仅仅是添加的作用,他也有修改的作用
NSLog(@"ndic1 = %@",ndic1);
//删除
//根据key值删除键值对
[ndic1 removeObjectForKey:@"1"];
NSLog(@"ndic1 = %@",ndic1);
//删除所有键值对
[ndic1 removeAllObjects];
NSLog(@"ndic1 = %@",ndic1);
//修改,同添加使用相同的方法
[ndic1 setObject:@"wunw" forKey:@"3"];
NSLog(@"ndic1 = %@",ndic1);
//简写方法
ndic1[@"2"] = @"wwwww";
NSLog(@"ndic1 = %@",ndic1);
//查找
NSArray *arr = [ndic1 allKeys];
BOOL Is = [arr containsObject:@"5"];//查看是否包含该key值的元素
NSLog(@"%d",Is);
//遍历字典(第一步:获取所有key值,第二步根据key值获取value值)
NSLog(@"ndic3 = %@",ndic3);
for(NSString *str in ndic3){
NSLog(@"%@ = %@",str,[ndic3 objectForKey:str]);//发现打印的时候乱序,尽量键值中不要出现key+数字(key10,key9==)
}
[ndic3 enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
NSLog(@"%@ = %@",key,obj);
}];
}
return 0;
}
NSDictionary及NSMutableDictionary
最新推荐文章于 2018-10-31 16:24:56 发布