字典
字典分为可变字典和不可变字典
1.NSMutableDIctionary是由键—值对组成的数据集合。正如,我们在字典里查找单词的定义一样。通过键(key),查找对应的值,所有的key都是字符串对象,值可以使其他任意类型。
字典里的key不能为空, 字典里的键—值是成对出现的。
在一个字典里的key必须是唯一的。
一个字典对象中表示空值,可以使用NSNull对象
2.为什么要使用字典,为什么不使用数组
数组特征:是按一定顺序去排列的集合,通过下标去存取值(当希望数据是按照一定顺序去排列的时候 选择使用数组)
字典特征:通过key存取值 key是我们指定的一个标记(获取一个具体的表示准确的得到想要的值)
3.字典的初始化
不可变字典的类名 NSDictionary
a. NSDictionary *dic = [[NSDictionary alloc]init];
初始化一个空字典
b.NSDictionary *dic1 = [NSDictionary dictionary];
4.字典的赋值
a.初始化的同时 添加一对键-值
NSDictionary *dic2 = [NSDictionary dictionaryWithObject:@"valus" forKey:@"key"];//通过key 可以取到valus这个值
b.初始化的同时 添加多对 键值
赋值时 前面是值 可以任意类型
后面是key 必须是字符串 注意赋值是为偶数
NSDictionary *dic3 = [NSDictionary dictionaryWithObjectsAndKeys:@"object", @"key", @"object1", @"key1",nil];
c.字典的新写法
前面是key 后面是值
NSDictionary *dic4 = @{@"key":@"值", @"key1":@"值1”};
5.字典的取值
a. objectForKey:通过key取字典里的值
NSDictionary *dic5 = @{@"key":@"值", @"key1":@"值1"};
NSString *str = [dic5 objectForKey:@"key"];
NSLog(@"%@", str);
b.第二种取值方式 字典名[@”key1”];
NSString *str1 = dic5[@"key1"];
NSLog(@"%@", str1);
6.字典练习题
练习题 1、用字典 表达出自己的分数 语文25 数学1000 英语3
分别取出语文数学英语的成绩
NSDictionary *score = [NSDictionary dictionaryWithObjectsAndKeys:@"25", @"yuwen", @"1000", @"shuxue", @"3", @"yingyu", nil];
NSString *a = [score objectForKey:@"yuwen"];
NSString *b = [score objectForKey:@"shuxue"];
NSString *c = [score objectForKey:@"yingyu"];
NSLog(@"%@", a);
NSLog(@"%@", b);
NSLog(@"%@", c);
// 字符串的拼接
NSString *allScore = [NSString stringWithFormat:@"语文:%@ 数学:%@ 英语%@", [score objectForKey:@"yuwen"], [score objectForKey:@"shuxue"], [score objectForKey:@"yingyu"]];
NSLog(@"%@", allScore);
2、用字典 表达出 一年四季的 特征
// 分别取出每个季节的特征
NSDictionary *season = [NSDictionary dictionaryWithObjectsAndKeys:@"万物苏醒", @"spring", @"万物开花", @"summer", @"百花凋零", @"autume", @"纷飞飘雪", @"winter", nil];
NSLog(@"春天是:%@ 夏天是:%@ 秋天是:%@ 冬天是:%@", [season objectForKey:@"spring"], [season objectForKey:@"summer"], [season objectForKey:@"autume"], [season objectForKey:@"winter"]);
7.可变字典
可变字典的初始化
NSMutableDictionary *dic6 = [NSMutableDictionary dictionary];
设置可变字典的值
[dic6 setObject:@"金刚芭比" forKey:@"name"];
[dic6 setObject:@"金刚" forKey:@"name”];
通过key 移除key对应的key和值
[dic6 removeObjectForKey:@”name”];
NSLog(@”%@”, dic6);
8.遍历字典
遍历字典的全部键值
for (NSString *key in season.allKeys ) {
NSLog(@"%@ %@", key, [season objectForKey: key]);
}//allKeys 是所有 key的一个数组