【NSDictionary的概述 Objective-C语言】

本文介绍了Objective-C中的NSDictionary,它是键值对数据结构,与NSArray和NSMutableArray对比,强调了键值对的优势——下标稳定,适合查找操作。讨论了数组元素下标不固定的问题,以及为何使用`indexOfObject:`而非下标定位元素。
摘要由CSDN通过智能技术生成

一、说一下我们下一个知识点,叫做NSDictionary

1.昨天呢,给大家讲了,其实刚才也复习了,叫做NSArray,还有这个NSMutableArray,

我们说,这个是我们OC当中的数组,

那么这个NSArray和NSMutableArray,它们存储数据的特点,每一个元素都是紧密相连的,跟C语言的数组一样的啊,

然后呢,每一个元素都有自己的下标,0,1,2,3,…

并且,每一个元素存的,直接就是值吧,

例如,@“jack”,@“rose”,@“lili”,@“Lucy”

NSArray与NSMutableArray存储数据的特点:

1)每一个元素紧密相连,

2)并且每1个元素中都是直接存储的值,

2.但这样存储,其实是有一些缺点的,

1)例如,我这儿有一个NSMutableArray数组,

NSMutableArray *arr = [NSMutableArray arrayWithObjects:@“jack”,@“rose”,@“lili”,nil];

这个数组里面有几个元素,3个,

这时候,我做件事情,来个

[arr addObject:@“Lucy”];

这句话执行完了之后,这个数组里面有几个元素呢,4个元素,分别是,@“jack”,@“rose”,@“lili”,@“lili”,

我想问一下,@"rose"在这个数组里面的下标是几,1,

@"rose"在数组中的下标是1

@"lili"在数组中的下标是2

我想问一下,@"lili"的下标,永远都是2吗,

我来一个方法啊,

[arr removeObjectAtIndex:2];

我想问一下,这句代码是不是一定删除的是@“lili”,

不一定,为什么啊,

如果我前面有这么一句话:

[arr removeObjectAtIndex:0];

我这句话执行完了以后,这个时候删的是@"lili"吗,不是,是谁,是@“lucy”

那你刚才不是说,@"lili"的下标是2吗,

所以说,NSMutableArray和NSArray的缺点,下标不固定

就是说,每一个元素的下标,都有可能会发生变化,

缺点:数组元素的下标不固定,都有可能会发生变化,

如果我把@"rose"给删掉,你认为仅仅是删掉吗,后面的元素是不是还要往前顶啊,

我删掉@"rose"以后,后面的元素的下标会发生变化,就是往前面顶

所以这个时候,你想要去找数组里面的元素的话,通过下标来找,靠谱吗,

缺点:数组元素的下标不固定,都有可能会发生变化,无法通过下标来唯一的确定数组中的元素,因为数组的元素的下标,是会发生变化的,

前一刻,@"lili"的下标还是2,可能后一秒,它就变成1,或者变成3了

这就是NSMutableArray的缺点,元素下标不固定,这时候,我通过下标去唯一的确定元素的话,就确定不了了,

那有人说,我用下面这个方法,查找@“lili”,

[arr indexOfObject:@“lili”];

这个时候,是不是就返回@"lili"的下标啊,

你看,我只有1句代码哦,但是这个方法内部,人家怎么写的,是不是还是1个1个遍历啊,

所以,我们希望,有一种存储数据的方式,存储到数组中,可以快速唯一的确定数组的元素

存储数据的时候,必须要为存储的数据取1个别名

这个别名的作用:就是用来确定别名对应的数据的

要找存储在数组中的数据,使用别名来找,而不是通过下标来找,因为下标有可能会发生变化,

无论你这个下标如何变化,这个数据的别名会不会变化啊,不会

这种存储数据的方式,就叫做 键值对 的存储方式

Key-Value

Key:就是键,就是为数据取的别名

Value:就是值,就是真正存储的数据

好了,以上就是NSDictionary的概述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清风清晨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值