不可变词典和可变词典
//由键值对key-value构成的数据结合
//字典中的元素是以键值对的形式存储的
//key为键 value为值
//一个key只能对应一个value key一般使用字符串
//字典的创建
NSString *str1 = @"zhangsan" ;
NSString *str2 = @"zhangfei" ;
NSString *str3 = @"lisi" ;
NSString *str4 = @"liping" ;
NSArray *array1 = [NSArray arrayWithObjects:str1,str2,nil] ;
NSArray *array2 = [NSArray arrayWithObjects:str3,str4,nil] ;
//第一个元素:key:@“zhang” value :array1
//第二个元素:key:@“li” value :array2
NSDictionary *dict =[[NSDictionary alloc]initWithObjectsAndKeys:array1,@"zhang",array2,@"li",nil] ;
NSLog(@"%@",dict) ;
//存放一个元素
NSDictionary *dict2 = [NSDictionary dictionaryWithObject:array1 forKey:@"zhang"] ;
NSLog(@"dict2 = %@",dict2);
//获取所有的key
NSArray *allkeys = [dict allKeys] ;
NSLog(@"%@",allkeys);
//获取所有的value
//可能为二维数组
NSArray *allvalue = [dict allValues] ;
NSLog(@"%@",allvalue) ;
//通过key获取value
NSArray *values = [dict objectForKey:@"zhang"] ;
NSLog(@"%@",values) ;
//优化的方法
NSDictionary *dict3 = @{@"zhangsan":array1,@"lisi":array2} ;
NSLog(@"%@",dict3) ;
NSMutableDictionary *md1 = [[NSMutableDictionary alloc] initWithCapacity:3] ;
NSArray *array3 = [[NSArray alloc] initWithObjects:@"zhangsan",@"lisi", nil];
//添加元素
[md1 setObject:array3 forKey:@"zhang"] ;
NSLog(@"%@",md1);
NSMutableDictionary *md2 = [[NSMutableDictionary alloc]initWithCapacity:3];
[md2 addEntriesFromDictionary:md1] ;
NSLog(@"%@",md2) ;
//删除元素
[md1 removeObjectForKey:@"zhang"] ; //以key删除
NSLog(@"%@",md1) ;
/*[md1 removeAllObjects] ;//删除所有元素
NSLog(@"%@",md1) ;*/
[md1 removeObjectsForKeys:array3 ] ; //以value删除
//循环遍历
//快速遍历
for ( NSString *key in md1 ) {
NSArray *value1 = [md1 objectForKey:key] ;
for ( NSString *v in values ) {
NSLog(@"%@",v);
}
}
//普通遍历
NSArray *allaKey = [md1 allKeys] ;
for ( int i = 0 ; i < allaKey.count ; i ++ ) {
NSArray *value2 = [md1 objectForKey:allaKey[i]] ;
}