下面都是我学习OC语言中字典和可变字典的学习总结,希望能给同学者一点帮助,也希望同学者帮忙指正错误之处。
一、字典的定义
不可变字典
1.NSDictionary(不可变字典), NSMutableDictionary(可变字典)是由键-值对组成的数据集合。
2.通过key(键),查找对应value(值)。key通常是字符串对象,值可以是其他任意类型对象。在一个对象中,key的值必须是唯一的。
注意:字典对象的键和值不可以为空(nil),如果需要在一个字典对象中表示一个空值,可以使用NSNull对象。
3.数据字典与数组的特征
1)数组:数组是按一定顺序去排列的集合,通过下标去存值。
当希望数据是按照一定的顺序去排列的时候,应该选择使用数组。
2)数据字典:通过key存取值。
获取一个具体的标识,准确得到需要的值。
4.数据字典的使用规则
数据字典是通过key来存取值,key value是成对出现的。
5.字典初始化方法
1)初始化一个空字典方法一
NSDictionary *dic = [[NSDictionary alloc] init];
2)初始化一个空字典方法二
NSDictionary *dic1 = [NSDictionary dictionary];
3)初始化的同时 添加一对键值 方法三
NSDictionary *dic2 = [NSDictionary dictionaryWithObject:@"value" forKey:@“key"];
4)初始化的同时 添加多对键值 方法四
注意:前面是值 可以任意类型,后面是key 必须是字符串。
NSDictionary *dic3 = [NSDictionary dictionaryWithObjectsAndKeys:@"value", @"key", @"value1", @“key1",nil];
5)字典的新写法
注意:前面是key,后面是值。
NSDictionary *dic4 = @{@"key1":@"value1", @“key2":@"value2"};
6.字典取值
1)方法一:objectForKey:通过key取字典里面的值
NSString *string = [dic5 objectForKey:@"key1"];
NSLog(@"%@", string);
2)方法二:取字典值 字典名[@“key"]
NSString *string1 = dic5[@"key1"];
NSLog(@"%@", string1);
7.快速遍历字典
1)allKeys 是所有key的一个数组。count得到数组内 有多少个元素。
字典名.allKeys是指所有key的数组。
2) 快速遍历key
for (NSString *key in 字典名.allKeys ) {
NSLog(@"%@", key);
}
二、可变字典的定义
可变字典
1. 可变字典:可以删除、添加(替换)。
2.可变字典的类名: NSMutableDictionary。是字典NSDictionary的一个子类。
3.可变字典的初始化
NSMutableDictionary *可变字典对象名 = [NSMutableDictionary dictionary];
注意:不可以使用这种方式初始化@{@"key":@"value"}
4.通过key设置字典里面的值
[可变字典对象名 setObject:@"值" forKey:@"key"];
5. 通过key移除key对应的key和值
[可变字典对象名 removeObjectForKey:@"key"];
NSLog(@"%@", 可变字典对象名);
三、字典的嵌套练习
1. 解析下面的字典
{
"code": 200;
“data” :
{
“id”:”110119”;
"nick" : "小花";
"header" : @"www.baidu.headerImage.png";
“balance”:”100”;
}
}
2.解析语句
1)首先初始化一个可变字典对象名
NSMutableDictionary *dic = [NSMutableDictionary dictionary];
2)对最外层嵌套字典设值
[dic setObject:@(200) forKey:@"code"];
3)对内层嵌套字典设值
NSDictionary *dataDic = @{@"data":@{@"id":@"110119", @"nick":@"name", @"header":@"www.baidu.headerImage.png", @"balance":@(100)}};
4)将内层嵌套数据设值到外层嵌套
[dic setObject:dataDic forKey:@"data"];
5)输出该字典嵌套
NSLog(@"%@", dic);
3.更改内层嵌套的内容
1)修改头像。我们更改头像,首先要将data变成可变字典。
NSMutableDictionary *dic1 =[dic1[@"data"] mutableCopy];//mutableCopy拷贝mutable的值
2)对头像重新设值
[dic2 setObject:@"www.taobao.image.png" forKey:@"header"];
3)打印修改头像情况
NSLog(@"%@", dic2);
3.判断通过输入code值是否登录成功
1)200:成功 输出data字典里面的所有内容
2) 300:失败,客户端直接弹出msg提示语
3)310:登录票据失败(客户端需重新登录)
实现代码如下:
//获得key值
NSInteger code = [dic1[@"code"] integerValue];
NSLog(@"尊敬的客户请输入您的code值");
scanf("%ld", &code);
//定义一个用户信息字典对象,以便查看用户信息
NSDictionary *userInfo = dataDic[@"data"];
//通过switch语句来判断信息
switch (code) {
case 200:
NSLog(@"恭喜您登入成功");
NSLog(@"用户昵称:%@", userInfo[@"nick" ]);
break;
case 300:
NSLog(@"对不起,登录名或密码错误,请重新输入!");
break;
case 310:
NSLog(@"对不起,登录数据失效,请重新登录!");
break;
default:
NSLog(@"返回数据失败!请重新输入!");
break; }