OC的不可变字典以及可变字典

相对数组而言,字典是无序的一个集合。字典的概念:字典是由关键字’key’及其’value’所构成的无序集合。即它由key-value组成的键值对的集合。’key’一般是NSString类型,’value’是OC中的任意对象。对于字典,我们就是通过’key’来访问相应的’value’。
字典同样有不可变字典(NSDictionary)和可变字典(NSMutableDictionary)。
1.不可变字典 NSDictionary
1)创建一个空的不可变字典

NSDictionary *dictionary = [[NSDictionary alloc]init];
NSDictionary *dictionary1 = [NSDictionary dictionary];
//新语法:
NSDictionary *dictionary2 = {};

2)创建一个只有一个键值对的字典

NSDictionary *dictionary3 = [NSDictionary dictionaryWithOject:@"Gene" forKey:@"name"];
NSDictionary *dictionary4 = {@"name":@"Gene"};

3)创建含有多个键值对的字典

//字典里面value存放的是“对象”,如果是基本数据类型,要先把基本数据类型进行封装,然后放到这些集合中去
NSDictionary *dictionary5 = [NSDictionary dictionaryWithOjectsAndKeys:@"Gene",@"name",@"23",@"age",@"1111",@"phoneNumber",nil];
//新语法:创建含有多个键值对的字典
NSDictionary *dictionary5_1 = [@"name":@"Gene",@"age":@"23",@"phoneNumber":@"1111"];

4)通过一个已知的字典创建一个新字典

NSDictionary *dictionary6 = [NSDictionary dictionaryWithDictionary:dictionary5];

5)从本地文件中读取字典

NSDictionary *dictionary7 = [NSDictionary dictionaryWithContentsOfFile:@" "];

6)从网络文件中读取字典

NSDictionary *dictionary8 = [NSDictionary dictionaryWithContentsOfURL:[NSURL URLWithString:@" "]];

7)计算字典中键值对的数量

NSUInteger count = dictionary5.count;

8)通过key访问字典中对应的值

NSString *name = [dictionary5 objectForKey:@"name"];
//新语法:查找key对应的值
NSString *newName = dictionary5[@"name"];

9)遍历字典中的所有key和value

//key
NSArray *keysArray = dictionary5.allKeys;
//value
NSArray *valuesArray = dictionary5.allValues;
/*----------------for----------------------*/
for(int i = 0; i < dictionary5.count; i++){
    NSLog(@"%@ = %@",keysArray[i],valuesArray[i]);
}
/*----------------for in--------------------*/
for(NSString *key in keysArray){
    NSLog(@"%@ = %@",key,dictionary5[key]);

/*----------------枚举器----------------------*/
//枚举器遍历
        NSEnumerator *enumerator = [keysArray objectEnumerator];
        id key;
        while (key = [enumerator nextObject]) {
            NSLog(@"%@ = %@",key,dictionary4[key]);
        }

PS:必须要注意的是,在创建一个含有多个键值对的数组时,如果某两个或几个键值对的键(key)相同,则最后的key对应的value是最开始的那一个。
例如:

NSDictionary *dictionary12 = @{@"name":@"Gene",@"age":@"25",@"address":@"GZ",@"name":@"mayun"};
        for (NSString *key in dictionary12) {
            NSLog(@"%@ = %@",key,dictionary12[key]);
        }

输出的结果是:
这里写图片描述
2.可变字典
1)初始化一个可变字典

NSMutableDictionary *mDictionary1 = [NSMutableDictionary dictionary];

2)创建一个含有一个键值对的可变字典

NSMutableDictionary *mDictionary2 = [NSMutableDictionary dictionaryWithObject:@"Gene" forKey:@"name"];

3)创建一个含有多个键值对的可变字典

NSMutableDictionary *mDictionary3 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"Gene",@"Gene",@"23",@"age",@"GZ",@"address", nil];

4)通过另一个字典创建一个新字典

 NSMutableDictionary *mDictionary4 = [NSMutableDictionary dictionaryWithDictionary:mDictionary3];

5)取字典的所有键

NSArray *keyArray = mDictionary3.allKeys;

6)取字典的所有key

 NSArray *keyArray = mDictionary3.allKeys;

7)取字典的所有value

NSArray *valueArray = mDictionary3.allValues;

8)可变字典的独特初始化方法

NSMutableDictionary *mDictionary5 = [NSMutableDictionary dictionaryWithCapacity:10];

9)从本地/网络读取字典

//从本地读取字典
NSMutableDictionary *mDictionary6 = [NSMutableDictionary dictionaryWithContentsOfFile:@""];
//从网络读取字典
NSMutableDictionary *mDictionary7 = [NSMutableDictionary dictionaryWithContentsOfURL:[NSURL URLWithString:@""]];

10)对字典的一些相关操作

//增(向一个空的字典增添键值对)
[mDictionary5 setValue:@"Gene" forKey:@"name"];
[mDictionary5 setValue:@"23" forKey:@"age"];

输出结果:
这里写图片描述

//改(如果原来的字典中已经有了akey这个键,那么新加的值就会覆盖原来关键字(键)akey对应的值)
[mDictionary5 setValue:@"Jack" forKey:@"name"];

输出结果:
这里写图片描述

//改 新语法
mDictionary5[@"name"] = @"Dash";

输出结果:
这里写图片描述
在字典的操作中,可以通过相应的key,对其对应的value进行修改

//删除指定key对应的value
[mDictionary5 removeObjectForKey:@"name"];
//删除所有对象
[mDictionary5 removeAllObjects];
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值