iOS概念入门学习-Foundation-NSArray

概要:本文主要介绍了NSArray的基本用法,在OC中,数组对象得到了极大的加强,拥有更强大的功能,并能存储多种数据类型。

一、NSArray基本介绍

1.概念

NSArray是OC中的数组类, 开发中建议尽量使用NSArray替代C语言中的数组。

2.NSArray的优点

首先让我们回顾一下C语言中数组有哪些不便:
- 只能存放一种类型的数据.(类型必须一致)
- 不能很方便地动态添加数组元素、不能很方便地动态删除数组元素(长度固定)
于是,NSArray横空出世,解决了C语言中遗留的诸多不便

3.NSArray的使用注意

(1)只能存放任意OC对象, 并且是有顺序的
(2)不能存储非OC对象, 比如int \float \double \char \enum \struct等
(3)它是不可变的, 一旦初始化完毕后, 它里面的内容就永远是固定的, 不能删除里面的元素, 也不能再往里面添加元素

3.NSArray的创建

(1)NSArray的类方法创建
这里写图片描述
(2)NSArray的对象方法创建
这里写图片描述
(3)用已经存在的数组创建新的数组
这里写图片描述

4.NSArray的注意事项

(1)NSArray直接使用NSLog()作为字符串输出时是小括号括起来的形式。
(2)NSArray中不能存储nil,因为NSArray认为nil是数组的结束(nil是数组元素结束的标记)。nil 就是0。0也是基本数据类型,不能存放到NSArray中。
(3)不能用以下方式创建数组
NSArray *array = [NSArray array];
这样的数组永远为空,因为NSArray不可变

二、NSArray常用用法

1.NSArray的常用用法

- (NSUInteger)count;
获取集合元素个数 

- (id)objectAtIndex:(NSUInteger)index; 
获得index位置的元素 

- (BOOL)containsObject:(id)anObject;
是否包含某一个元素 

- (id)lastObject; 
返回最后一个元素 

- (id)firstObject; 
返回第一个元素 

- (NSUInteger)indexOfObject:(id)anObject; 
查找anObject元素在数组中的位置(如果找不到,返回-1)NSNotFound 

- (NSUInteger)indexOfObject:(id)anObject inRange:(NSRange)range; 
在range范围内查找anObject元素在数组中的位置 

2.NSArray的遍历

(1)NSArray的下标遍历

这里写图片描述

(2)NSArray的快速遍历

这里写图片描述

(3)NSArray使用block遍历

这里写图片描述

3.NSArray与字符串

(1)把数组元素链接成字符串
- (NSString )componentsJoinedByString:(NSString )separator;
这是NSArray的方法, 用separator作拼接符将数组元素拼接成一个字符串
这里写图片描述

(2)字符串分割方法
这里写图片描述

三、NSMutableArray

1.概念

NSMutableArray是NSArray的子类
NSArray是不可变的, 一旦初始化完毕后, 它里面的内容就永远是固定的, 不能删除里面的元素, 也不能再往里面添加元素 。NSMutableArray是可变的, 随时可以往里面添加\更改\删除元素
创建一个空的NSMutableArray
NSMutableArray *array = [NSMutableArray array];

2.NSMutableArray的创建方法

(1)创建空数组
NSMutableArray *arr = [NSMutableArray array];
(2)创建数组,并且指定长度为5,此时也是空数组
NSMutableArray *arr2 = [[NSMutableArray alloc] initWithCapacity:5];
(3)创建一个数组,包含两个元素
NSMutableArray *arr3 = [NSMutableArray arrayWithObjects:@"1",@"2", nil];
(4)调用对象方法创建数组
NSMutableArray *arr4 = [[NSMutableArray alloc] initWithObjects:@"1",@"2", nil];

3.常用用法

-(void)addObject:(id)object; //添加一个元素
-(void)removeLastObject; //删除最后一个元素
-(void)removeAllObjects; //删除所有的元素
-(void)removeObjectAtIndex:(NSUInteger)index;
//删除index位置的元素

-(void)removeObject:(id)object;
//删除特定的元素

-(void)removeObjectsInRange:(NSRange)range;
//删除range范围内的所有元素

-(void)replaceObjectAtIndex:(NSUInteger)index withObject:(id)anObject;
//用anObject替换index位置对应的元素

-(void)exchangeObjectAtIndex: (NSUInteger) idx1 withObjectAtIndex: (NSUInteger)idx2; //交换idx1和idx2位置的元素

特别注意:
NSMutableArray *array = @[@"bob", @"steve", @"john"];
错误,使用@[@”bob”, @”steve”, @”john”]这种方式创建的永远是NSArray(不可变数组)

总结:NSArray和NSMutableArray的组合与NSString和NSMutableString的组合十分类似,前面的用来处理不可变的,后者用来处理可变的。可变的扩充处理方法也有很多相似之处,在实际的编程中,我们应该根据需求选用不同的数据类型,牢记它们的常用用法,关键时刻还可以查询“秘籍”。嘿嘿,黑马,我来了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值