Foundation框架—集合
(1)NSArray的基本介绍
NSArray是OC中使用的数组,是面向对象的,以面向对象的形式操纵对象,是不可变数组。
C语言数组有一个缺点即数组中只能存放同种数据类型的元素。
OC数组只能存放OC对象,不能存放非OC对象,如int,结构体和枚举等。
(2)NSArray的创建
![](http://images.cnitblog.com/i/450136/201405/061753002761100.png)
(3)NSArray的访问
![](http://images.cnitblog.com/i/450136/201405/061753336203353.png)
(4)NSArray的遍历
数组的遍历有以下几种方式:
首先创建一个数组
![](http://images.cnitblog.com/i/450136/201405/061753496513351.png)
第一种方法:使用for循环遍历
![](http://images.cnitblog.com/i/450136/201405/061754055732848.png)
![](http://images.cnitblog.com/i/450136/201405/061754159798627.png)
Block遍历的深入研究:
![](http://images.cnitblog.com/i/450136/201405/061754290884367.png)
每拿到一个元素,就传递给obj,就会调用一次block,并且把当前的元素和索引位置当做参数传递给block。
注意1:break只使用在两种场合,即switch和循环结构中。
注意2:stop参数用来停止遍历,其值若为YES,则停止。
(二)NSMutableArray可变数组
(1)NSMutableArray的基本使用
注意:NSMutableArray继承自NSArray,几乎拥有NSArray的一切方法。
![](http://images.cnitblog.com/i/450136/201405/061754513233225.png)
二、NSSet和NSMutableSet
(一)NSSet不可变集合
基本使用:
![](http://images.cnitblog.com/i/450136/201405/061755332603672.png)
(二)NSMutableSet可变集合
基本使用:
![](http://images.cnitblog.com/i/450136/201405/061755430263621.png)
(三)NSSet和NSArray的对比
(1)共同点:
1)都是集合,都能够存放多个对象
2)只能存放oc对象,不能存放非oc对象类型(如int等基本数据类型和结构体,枚举等)。
3)本身都不可变,都有一个可变的子类。
(2)不同点:
1)NSArray有顺序,NSSet没有顺序
三、NSDictionary和NSMutableDictionary
(一)NSDictionary不可变字典
(1)介绍
现实中的字典:根据索引找到具体的内容
OC中的NSDictionary:根据key找到value。里面存储的东西都是键值对。
(2)NSDictionary的创建
![](http://images.cnitblog.com/i/450136/201405/061756029329036.png)
注意:快速创建字典是编译器特性。
(3)NSDictionary的访问
![](http://images.cnitblog.com/i/450136/201405/061756257458237.png)
(4)NSDictionary的遍历
![](http://images.cnitblog.com/i/450136/201405/061756376675046.png)
(二)NSMutableDictionary可变字典
(1)NSMutableDictionary的基本使用
![](http://images.cnitblog.com/i/450136/201405/061756520885987.png)
(2)NSMutableDictionary的使用注意
![](http://images.cnitblog.com/i/450136/201405/061757047139411.png)
注意:这种快速创建的方式只适用于不可变字典。
Foundation框架详细解析 (一) —— 基本概览(一)Foundation框架详细解析 (二) —— Foundation的结构组成和它在iOS系统中的地位和位置(一)
相关文章
- 程序员的量化交易之路(22)--Cointrader值货币集合Currencies(10)
- springmvc接收前台(可以是ajax)传来的数组list,map,set等集合,复杂对象集合等图文详解
- java集合类
- 【HIBERNATE框架开发之七】HIBERNATE使用ANNOTATION中各种关系映射的CRUD(增删改查)&&集合映射&&继承映射
- Java集合源码分析(四)Vector<E>
- python生成式:列表、字典、集合
- Atitit.excel导出 功能解决方案 php java C#.net版总集合.doc
- Database之SQL:自定义创建数据库的各种表demo集合(以方便理解和分析sql的各种增删改查语法的具体用法)
- Pytorch之CNN:从代码认知CNN经典架构—基于Pytorch框架的代码实现经典轻量化卷积神经网络的算法集合(SqueezeNet/MobileNet3/ShuffleNet)
- DL之YoloV3:Yolo V3算法的简介(论文介绍)、各种DL框架代码复现、架构详解、案例应用等配图集合之详细攻略
- DL之RefineNet:RefineNet和Light-Weight RefineNet算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略
- 【项目实战】并发编程之Java集合框架中的一个线程安全的队列实现 ——BlockingQueue入门介绍
- java集合进行排序的两种方式
- Kotlin 开发者社区: Kotlin collections (集合类)
- java基础与java集合面试题
- 【Leetcode刷题Python】剑指 Offer II 082. 含有重复元素集合的组合
- Redis 与 set(无序集合) 相关的常用命令