Objective-C NSArray

这篇博客详细介绍了Objective-C中的NSArray和NSMutableArray。NSArray是一个不可变数组,用于存放OC对象,不能添加或删除元素,但可以检索和遍历元素。NSMutableArray作为NSArray的子类,是可变的,允许添加、删除和替换元素。博客内容涵盖了数组的创建、检索、遍历、发送消息以及其他相关操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

NSArray是OC中的数组类,相比较C语言的数组它可以存放不同类型的数据可以动态的添加和删除数组元素,同时使用的时候也需要注意,NSArray只能存放OC对象,并且是有顺序的,不能存放非OC类,比如int、foat、dounule、char、enum、struct等。我们初始化完毕之后, 它里面的内容就永远是固定的, 不能删除里面的元素, 也不能再往里面添加元素。

创建

+ (instancetype)array;
+ (instancetype)arrayWithObject:(id)anObject;
+ (instancetype)arrayWithObjects:(id)firstObj;
+ (instancetype)arrayWithArray:(NSArray *)array;

+ (id)arrayWithContentsOfFile:(NSString *)path;
+ (id)arrayWithContentsOfURL:(NSURL *)url;

//将一个NSArray保存到文件中
- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile;
- (BOOL)writeToURL:(NSURL *)url atomically:(BOOL)atomically;

检索

获取集合元素个数

- (NSUInteger)count;

获得index位置的元素

- (id)objectAtIndex:(NSUInteger)index; 

是否包含某一个元素

- (BOOL)containsObject:(id)anObject; 

返回第一/最后一个元素

- (id)firstObject; 
- (id)lastObject; 

查找anObject元素在数组中的位置(如果找不到,返回-1)

- (NSUInteger)indexOfObject:(id)anObject;

在range范围内查找anObject元素在数组中的位置

- (NSUInteger)indexOfObject:(id)anObject inRange:(NSRange)range;

给所有元素发消息

让集合里面的所有元素都执行aSelector这个方法

- (void)makeObjectsPerformSelector:(SEL)aSelector;
- (void)makeObjectsPerformSelector:(SEL)aSelector withObject:(id)argument;

遍历元素

遍历, 就是将NSArray里面的所有元素一个一个取出来查看

//普通遍历
for (int i = 0; i<array.count; i++) {  }

//快速遍历
for (id obj in array) {  }

//Block遍历
[array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
    //之前我们也提到过这个方法
}];

其他方法

用separator作拼接符将数组元素拼接成一个字符串

- (NSString *)componentsJoinedByString:(NSString *)separator;

我们对比NSString的方法:

将字符串用separator作为分隔符切割成数组元素

- (NSArray *)componentsSeparatedByString:(NSString *)separator;

NSMutableArray

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

添加元素

添加一个元素

- (void)addObject:(id)object;

添加otherArray的全部元素到当前数组中

- (void)addObjectsFromArray:(NSArray *)array;

在index位置插入一个元素

- (void)insertObject:(id)anObject atIndex:(NSUInteger)index;

删除元素

删除最后一个元素

- (void)removeLastObject;

删除所有的元素

- (void)removeAllObjects;

删除index位置的元素

- (void)removeObjectAtIndex:(NSUInteger)index;

删除特定的元素

- (void)removeObject:(id)object;

删除range范围内的所有元素

- (void)removeObjectsInRange:(NSRange)range;

替换元素

用anObject替换index位置对应的元素

- (void)replaceObjectAtIndex:(NSUInteger)index withObject:(id)anObject;

交换idx1和idx2位置的元素

- (void)exchangeObjectAtIndex:(NSUInteger)idx1 withObjectAtIndex:(NSUInteger)idx2;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值