Foundation框架--NSDictionary的使用

一、NSDictionary介绍

1、NSDictionary的介绍

NSDictionary翻译过来叫做”字典”

日常生活中, “字典”的作用: 通过一个拼音或者汉字, 就能找到对应的详细解释。

NSDictionary的作用类似: 通过一个key(键), 就能找到对应的value(值) NSDictionary是不可变的, 一旦初始化完毕, 里面的内容就无法修改。


2、NSDictionary的创建

1)创建空字典

NSDictionary *d1 = [NSDictionary dictionary];

NSLog(@"d1 = %@",d1);

打印结果:
d1 = {
}


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

NSDictionary *d2 = [NSDictionary dictionaryWithObject:@"jiaozuo" forKey:@"H"];

NSLog(@"d2 = %@",d2);

打印结果:

d2 = {
H = jiaozuo;
}


3)创建多组键值对的字典

NSDictionary *d3 = [NSDictionary dictionaryWithObjectsAndKeys:@"jiaozuo",@"H",@"zhengzhou",@"A",@"luoyang",@"C", nil];

NSLog(@"d3 = %@",d3);

打印结果:

d3 = {
A = zhengzhou;
C = luoyang;
H = jiaozuo;
}


4)快速创建一个字典@{key值:value值}

NSDictionary *d4 = @{
                             @"S":@"dazhou",@"A":@"chengdu"
                    };

NSLog(@"d4 = %@",d4);

打印结果:

d4 = {
A = chengdu;
S = dazhou;
}


3、键值对集合的特点

1)字典存储的时候,必须是”键值对”的方式来存储(同时键不要重复)

2) 键值对中存储的数据是”无序的”.

3) 键值对集合可以根据键, 快速获取数据.


二、NSDictionary基本使用方法

1、获取字典长度

NSLog(@"d4.count = %lu",d4.count);

打印结果:

d4.count = 2

2、根据key值取出value值

NSString *str1 = [d4 valueForKey:@"A"];
NSString *str2 = [d4 objectForKey:@"A"];

NSLog(@"str1 = %@",str1);
NSLog(@"str2 = %@",str2);

打印结果:

str1 = chengdu

str2 = chengdu


三、NSDictionary遍历方法

1、增强for循环方法

NSDictionary *d5 = @{
                             @"A":@"zhengzhou",@"C":@"luoyang",@"H":@"jiaozuo"
                             };
        //第一步:获取所有的key
        //第二步:根据key获取value值

        for (NSString *key in d5) {

            NSLog(@"key = %@,value = %@",key,[d5 valueForKey:key]);
        }

打印结果:

key = A,value = zhengzhou

key = C,value = luoyang

key = H,value = jiaozuo


2、block方法

[d5 enumerateKeysAndObjectsUsingBlock:^(id  _Nonnull key, id  _Nonnull obj, BOOL * _Nonnull stop) {

NSLog(@"key = %@,value = %@",key,obj);

        }];

打印结果:

key = A,value = zhengzhou

key = C,value = luoyang

key = H,value = jiaozuo


三、NSDictionary的文件操作

1、把字典保存到文件中

//简写形式定义一个字典
NSDictionary *d1 = @{
                                 @"jz":@"jiaozuo",@"ly":@"luoyang",@"zz":@"zhengzhou"
                                 };

NSLog(@"d1 = %@",d1);

//简写形式获取key对应的value值
NSLog(@"%@",d1[@"jz"]);

//把字典保存到文件中
if([d1 writeToFile:@"/Users/leikai/Desktop/d1.plist" atomically:YES]){

            NSLog(@"写入成功");
            }else{
            NSLog(@"写入失败");
            }

打印结果:

d1 = {
jz = jiaozuo;
ly = luoyang;
zz = zhengzhou;
}

jiaozuo

写入成功

写入结果:

写入结果截图


2、从文件中读取字典

NSDictionary *d2 = [NSDictionary dictionaryWithContentsOfFile:@"/Users/leikai/Desktop/d1.plist"];

NSLog(@"d2 = %@",d2);

3、字典包含数组并读写操作

1)写入操作

NSArray *hnArr = @[@"zhengzhou",@"luoyang",@"jiaozuo"];

NSArray *scArr = @[@"chengdu",@"dazhou"];

NSDictionary *d3 = @{
                                 @"hn":hnArr,@"sc":scArr
                                 };
if ([d3 writeToFile:@"/Users/leikai/Desktop/d3.plist" atomically:YES]) {
            NSLog(@"写入成功");
            }else{
            NSLog(@"写入失败");
            }

打印结果:

写入成功

写入结果:

写入内容截图


2)读取操作

NSDictionary *d5 = [NSDictionary dictionaryWithContentsOfFile:@"/Users/leikai/Desktop/d3.plist"];

NSLog(@"d5 = %@",d5);

//遍历
[d5 enumerateKeysAndObjectsUsingBlock:^(id  _Nonnull key, id  _Nonnull obj, BOOL * _Nonnull stop) {

//获取每个元素
for (NSString *str in obj) {

               NSLog(@"%@",str);

                }
            }];

//获取每个数组
NSArray *hnArr =  d5[@"hn"];
NSLog(@"hnArr = %@",hnArr);

NSArray *scArr = d5[@"sc"];
NSLog(@"scArr = %@",scArr);

打印结果:

d5 = {
hn = (
zhengzhou,
luoyang,
jiaozuo
);
sc = (
chengdu,
dazhou
);
}


zhengzhou
luoyang
jiaozuo
chengdu
dazhou


hnArr = (
zhengzhou,
luoyang,
jiaozuo
)


scArr = (
chengdu,
dazhou
)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值