博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
黑马程序员——NSArray小结
阅读量:6336 次
发布时间:2019-06-22

本文共 4473 字,大约阅读时间需要 14 分钟。

常见的NSArray方法

方法 描述
 + (instancetype)arrayWithObjects:(id)Obj...  创建一个新数组,obj,...是其中的元素
 - (BOOL)containsObject:(id)Obj  确定数组中是否包含对象Obj(使用isEqual:方法)
 - (NSUInteger)indexOfObject:(id)Obj  第一个包含对象Obj的元素索引号(使用isEqual:方法)
 - (NSUInteger)count  数组中元素的个数 
 - (NSUInteger)indexOfObjectPassingTest:(BOOL (^)(id obj, NSUInteger idx, BOOL *stop))predicate  传递每个对象obj,带有索引号idx到区块predicate中,如果obj通过测试返回YES,未通过返回NO,设置变量指针stop为YES结束处理
- (id)lastObject  返回数组最后的元素
 - (id)objectAtIndex:(NSUInteger)index  返回下标为index的元素
 - (void)makeObjectsPerformSelector:(SEL)aSelector   将aSelector指示的消息发送给数组中得每个元素
 - (void)enumerateObjectsUsingBlock:(void (^)(id obj, NSUInteger idx, BOOL *stop))block  通过块获取数组中得每个元素,包括对象obj和对应的index,只有当所有元素都遍历完或设置变量指针stop为YES才结束处理
 - (NSArray *)sortedArrayUsingSelector:(SEL)comparator  根据指定comparator方法的比较器对数组进行排序
 - (NSArray *)sortedArrayUsingComparator:(NSComparator)cmptr  通过执行区块cmptr对数组进行排序
- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)flag   将数组写入指定的文件夹中,如果flag为YES,则先创建一个临时文件

常见的NSMutableArray方法(NSMutableArray类是NSArray的子类,因此上面的方法,对NSMutableArray也适用)

方法 描述
+ (instancetype)array 创建一个空数组
+ (instancetype)arrayWithCapacity:(NSUInteger)numItems 使用指定的初始numItems创建一个数组
- (instancetype)initWithCapacity:(NSUInteger)numItems 使用指定的初始numItems初始化新分配的数组
- (void)addObject:(id)object 将对象object添加到数组的末尾
- (void)insertObject:(id)anObject atIndex:(NSUInteger)index 将对象object插入到数组的index位置
- (void)replaceObjectAtIndex:(NSUInteger)index withObject:(id)anObject 将数组中下标为index的元素用anObject对象替换
- (void)removeObject:(id)anObject 从数组中删除所有的anObject
- (void)removeObjectAtIndex:(NSUInteger)index 从数组中删除元素index
- (void)sortUsingSelector:(SEL)comparator 用comparator指定的比较器将数组排序
- (void)sortUsingComparator:(NSComparator)cmptr 通过执行区块block对数组进行排序

 

示例代码:

#import 
int main(int argc, const char * argv[]){ @autoreleasepool { //类方法数组创建 NSArray *array1 = [NSArray arrayWithObject:@"obj"]; NSArray *array2 = [NSArray arrayWithObjects:@"obj1", @"obj2", @"obj3", nil]; NSArray *array3 = [NSArray arrayWithArray:array2]; NSLog(@"array1 :%@", array1); NSLog(@"array2 :%@", array2); NSLog(@"array3 :%@", array3); //实例方法创建数组 NSArray *array4 = [[NSArray alloc] initWithObjects:@"AAA", @"bbb", nil]; NSLog(@"array4 :%@", array4); //数组个数 NSLog(@"array3 count :%d", [array3 count]); //访问元素 NSLog(@"obj at index :%@", [array2 objectAtIndex:2]); //追加(返回新的array对象) NSArray *array5 = [array3 arrayByAddingObject:@"ccc"]; NSLog(@"array5 :%@", array5); //根据指定的字符串连接数组元素 NSString *joinString1 = [array5 componentsJoinedByString:@"|"]; NSLog(@"joinString :%@",joinString1); //是否包含指定对象 NSLog(@"isContains :%d", [array5 containsObject:@"obj2"]); //查找某个对象所在索引 NSLog(@"indexOfObject :%d",[array5 indexOfObject:@"obj3"]); //最后一个元素 NSLog(@"lastObejct :%@", [array5 lastObject]); //遍历数组 for (id element in array5) { NSLog(@"element :%@", element); } //可变数组(期望容量设置为3) NSMutableArray *mutableArray = [NSMutableArray arrayWithCapacity:3]; //直接添加 [mutableArray addObject:@"aaa"]; [mutableArray addObject:@"eee"]; [mutableArray addObject:@"000"]; NSLog(@"addObject :%@", mutableArray); //插入元素 [mutableArray insertObject:@"ccc" atIndex:0]; NSLog(@"insertObject :%@", mutableArray); //移除指定元素 [mutableArray removeObject:@"ccc"]; NSLog(@"removeObject :%@", mutableArray); //移除指定下标元素 [mutableArray removeObjectAtIndex:0]; NSLog(@"removeObjectAtIndex :%@", mutableArray); //移除最后一个元素 [mutableArray removeLastObject]; NSLog(@"removeLastObject :%@", mutableArray); //添加数组 [mutableArray addObjectsFromArray:array5]; NSLog(@"addObjectsFromArray :%@", mutableArray); //移除指定数组中的内容 [mutableArray removeObjectsInArray:array2]; NSLog(@"removeObjectsInArray :%@", mutableArray); //指定索引替换对象 [mutableArray replaceObjectAtIndex:0 withObject:@"==="]; NSLog(@"replaceObjectAtIndex :%@", mutableArray); //删除全部对象 [mutableArray removeAllObjects]; NSLog(@"removeAllObjects :%@", mutableArray); } return 0;}

 

转载于:https://www.cnblogs.com/zhangguiguang/p/4874483.html

你可能感兴趣的文章
刷题第三天,根本就没用过堆栈,刷题刷到了,看了一下,知道点了,这回用一用哈哈哈 ----- 20. Valid Parentheses...
查看>>
数据并行化
查看>>
QuartZ Cron表达式
查看>>
性能测试工具VTune的功能和用法介绍
查看>>
音频视频组件Audio DJ Studio for .NET更新至v10.0.0.0丨附下载
查看>>
线上问题处理(一)
查看>>
在Centos7 系统中使用supermin制作CentOS6 的Docker镜像
查看>>
python安装教程(Windows系统,python3.7为例)
查看>>
开启和关闭HBase的thrift进程
查看>>
iOS——字体,颜色,常量等适配机型
查看>>
select2和bootstrap模态框使用时出现的bug以及解决方案
查看>>
dtree
查看>>
excel导出工具类(POI)
查看>>
String、StringBuffer与StringBuilder之间区别
查看>>
ORA-01704: 字符串文字太长处理
查看>>
指针浅析
查看>>
提高MySQL性能的7个技巧
查看>>
Android双击退出
查看>>
python列表,元组,字典
查看>>
修改nodejs获取客户端ip地址格式默认为ipv6
查看>>