字典:
字典用于保存具有映射关系key-value数据的集合
一个key-value对 认为一条目,字典是存储 key-value对 的容器
对于name:张三来说 name就是key 张三就是key对应的value
字典特点:
1.与数组不同,字典靠key存取元素(数组是通过下标存取元素)
2.key不能重复,value必须是对象(如果不是对象用NSNumber,NSValue)
3.键值对在字典中时无序存储的
4.分为:可变字典(NSMutableDictionary)和不可变字典(NSDictionary)
5.不可变字典,字典一旦创建,键值对就不能更改,不可添加,也不可以删除,仅能读取key或者value
6.字典中键值是成对出现的,不能出现但数个元素个数
NSDictionary *dic = [[NSDictionaryalloc]initWithObjectsAndKeys:@"Dog",@"animal1",@"Cat",@"animal2",@"Rabbit",@"animal3",
@"Monkey",@"animal4",@"Bird",@"animal5",nil];
//获取所有key值,所有value值
//获取字典元素个数
NSUInteger count = dic.count;
NSLog(@"%lu",count);
//获取所有key值和value值
NSArray *array = dic.allKeys;
for (int i = 0; i < array.count; i++) {
NSLog(@"array[%d] = %@",i,[arrayobjectAtIndex:i]);
}
//获取value值
NSArray *array1 = dic.allValues;
for (int i = 0; i < array1.count; i++) {
NSLog(@"array1[%d] = %@",i,[array1objectAtIndex:i]);
}
//通过key值查找value值
NSString *animal1 = [dic valueForKey:@"animal1"];
NSLog(@"%@",animal1);
创建一个班级字典,里面包含各个小组,每个小组又包含这组所有成员的名字
//先创建小组数组
NSMutableArray *group1 = [[NSMutableArrayalloc] initWithObjects:@"小敏",@"王雪娟",@"郭飞飞",@"秦俊珍",nil];
NSMutableArray *group2 = [[NSMutableArrayalloc] initWithObjects:@"范芳芳",@"刘海燕",@"张衡",@"李书明",nil];
NSMutableArray *group3 = [[NSMutableArrayalloc] initWithObjects:@"佳慧",@"张鹏飞",@"乔自朋",@"李志鹏" ,nil];
NSMutableArray *group4 =[[NSMutableArrayalloc] initWithObjects:@"韩苇棋",@"练晓俊",@"郭亚茹",@"马娟娟" ,nil];
NSMutableDictionary *class = [[NSMutableDictionaryalloc] init];//创建可变字典,把各小组添加到字典中
[class setValue:group1 forKey:@"第一组"];
[class setValue:group2 forKey:@"第二组"];
[class setValue:group3 forKey:@"第三组"];
[class setValue:group4 forKey:@"第四组"];
NSArray *class1 = [class allKeys];
for (int i = 0; i < class1.count; i++) {
//通过key值取出字典里对应的value(各小组数据)
NSArray *groupArray = [class valueForKey:class1[i]];
for (int j = 0; j < groupArray.count; j++) {
//通过下标访问数组里面的每一个元素
if (j < groupArray.count) {//防止数组越界访问
NSLog(@"%@ %@", class1[i],groupArray[j]);
}
}
}
![生气](http://static.blog.csdn.net/xheditor/xheditor_emot/default/mad.gif)
![生气](http://static.blog.csdn.net/xheditor/xheditor_emot/default/mad.gif)
[dictionary1setValue:@"Chicken"forKey:@"animal3"];//修改key@“animal3”对应的值,将其改为@“Chicken”
集合(NSSet)
iOS中也有表示数学中集合的类,叫做NSSet
特点:
1.与数学中的集合一样,集合中元素是唯一的(不能重复)
2.集合中元素无序存储
3.集合中元素必须是对象类型(如果是基本数据类型需要通过NSNumber,NSValue转化为对象类型)
4.iOS中集合分为两类:NSSet和NSMutableSet
快速枚举
//数组快速枚举
NSArray *quickArray = [NSArrayarrayWithObjects:@"小王子",@"龙猫",@"千与千寻",nil];
//in右边是集合名,左边是集合中元素的类型
for (NSString *strin quickArray) {
NSLog(@"str = %@",str);
}