NSArray *addingAry = [NSArray array];NSArray *myAry = @[@"a",@"ちゃん",@"李",@"田",@"孔"];//- (NSArray<ObjectType> *)arrayByAddingObject:(ObjectType)anObject;//不可变数组添加单个元素addingAry = [myAry arrayByAddingObject:@"孙"];//- (NSArray<ObjectType> *)arrayByAddingObjectsFromArray:(NSArray<ObjectType> *)otherArray;//把另一数组元素拼接过来addingAry = [myAry arrayByAddingObjectsFromArray:@[@"赵",@"关",@"钱"]];NSLog(@"%@",addingAry);//- (NSString *)componentsJoinedByString:(NSString *)separator;//把元素根据指定字符分隔成 StringNSString *componentStr = [myAry componentsJoinedByString:@"-"];//- (BOOL)containsObject:(ObjectType)anObject;//是否包含某个元素BOOL isContains = [addingAry containsObject:@"陈"];//@property (readonly, copy) NSString *description;//元素当前编码格式的字符串NSString *descriptionStr = addingAry.description;//- (NSString *)descriptionWithLocale:(nullable id)locale;//TODO:本地化字符串//目前参考相关资料,NSArray 和 NSDictionary 分类重写时候用,这样在打印的时候本地化显示元素内容//重写方法在 分类 “NSArray+ArrayLocal.h”NSLocale *locale = [NSLocale currentLocale];
//    NSString *localeDescriptionStr = [addingAry descriptionWithLocale:locale];/*未重写前a,"\U5f20","\U674e","\U7530","\U5b54","\U8d75","\U5173","\U94b1"*//*重写后 打印数组a,ちゃん,李,田,孔,赵, 关, 钱,*///- (NSString *)descriptionWithLocale:(nullable id)locale indent:(NSUInteger)level;//本地化后,缩进值 (无语,只是本地化同时允许打印缩进), 分类没重写带缩进方法,只是测试缩进效果NSString *localeAndLevDescriptionStr = [addingAry descriptionWithLocale:locale indent:3];/* indent 0(a,"\U3061\U3083\U3093","\U674e","\U7530","\U5b54","\U8d75","\U5173","\U94b1")*//* indent 3(a,"\U3061\U3083\U3093","\U674e","\U7530","\U5b54","\U8d75","\U5173","\U94b1")*///- (nullable ObjectType)firstObjectCommonWithArray:(NSArray<ObjectType> *)otherArray;//addingAry 首元素 与 另一数组的元素交集,如果有相同于首元素返回该元素值,如果不相同返回nilid commonObject = [addingAry firstObjectCommonWithArray:@[@"absdf",@"a"]];//- (void)getObjects:(ObjectType __unsafe_unretained [])objects range:(NSRange)range;//从range 范围获取元素赋值给 objects

检索Block方法、高效枚举方法

//- (NSUInteger)indexOfObjectIdenticalTo:(ObjectType)anObject;//- (NSUInteger)indexOfObject:(ObjectType)anObject;//返回相同值的最低索引NSUInteger i = [addingAry indexOfObjectIdenticalTo:@"田"];//3NSUInteger ii = [addingAry indexOfObject:@"田"];//3//- (NSEnumerator<ObjectType> *)objectEnumerator;//获取正序排列集合,通过 nextObject函数删除0下标元素NSArray *myAry1 = @[@"a",@"b",@"d",@"ff",@"c"];NSEnumerator *enumerator = [myAry1 objectEnumerator];id obj;while( obj=[enumerator nextObject]){//遍历完后,数组已经清空NSLog(@"%@",obj);/*a,b,d,ff,c*/}//执行一次删除下标0元素id enumObject = [enumerator nextObject];[enumerator nextObject];//返回数组NSArray *allAry = enumerator.allObjects;//- (NSEnumerator<ObjectType> *)reverseObjectEnumerator;//获取反序排列集合enumerator = [myAry1 reverseObjectEnumerator];allAry = enumerator.allObjects;/*c,ff,d,b,a*///自定义排序,混合使用比较复杂//@property (readonly, copy) NSData *sortedArrayHint;//- (NSArray<ObjectType> *)sortedArrayUsingFunction:(NSInteger (*)(ObjectType, ObjectType, void * __nullable))comparator context:(nullable void *)context;//- (NSArray<ObjectType> *)sortedArrayUsingFunction:(NSInteger (*)(ObjectType, ObjectType, void * __nullable))comparator context:(nullable void *)context hint:(nullable NSData *)hint;NSData *data = [allAry sortedArrayHint];NSArray *a = [allAry sortedArrayUsingFunction:sortType context:nil hint:data];//- (NSArray<ObjectType> *)subarrayWithRange:(NSRange)range;//截取range范围元素,返回一个新数组NSRange subRange = {1,3};NSArray *subAry = [allAry subarrayWithRange:subRange];//- (void)makeObjectsPerformSelector:(SEL)aSelector//- (void)makeObjectsPerformSelector:(SEL)aSelector withObject:(nullable id)argument//数组每一个元素执行一次 SEL ,元素只能是实例对象//*********************************//示例1 更改所有button selected 属性UIButton *btn1 = [[UIButton alloc]initWithFrame:CGRectMake(0, 0, 100, 100)];btn1.selected = NO;UIButton *btn2 = [[UIButton alloc]initWithFrame:CGRectMake(0, 200, 100, 100)];btn1.selected = NO;NSMutableArray *btnAry = [NSMutableArray arrayWithObjects:btn1,btn2,nil];[btnAry makeObjectsPerformSelector:@selector(setSelected:) withObject:@YES];//示例2 代替 for in 清空View[[self.view subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)];//示例3 调用method__weak TRViewController *VC = self;SEL print = @selector(printfSomeTH);NSArray *objectAry = @[VC];[objectAry makeObjectsPerformSelector:print];//********************************//- (void)enumerateObjectsUsingBlock:(void (^)(ObjectType obj, NSUInteger idx, BOOL *stop))block//遍历数组,block返回每个数组元素、下标[allAry enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {;NSLog(@"block===obj:%@ idx:%ld stop:%s",obj,(unsigned long)idx,stop);if ([obj isEqualToString:@"b"]){*stop = YES; //停止循环}}];//- (void)enumerateObjectsWithOptions:(NSEnumerationOptions)opts usingBlock:(void (^)(ObjectType obj, NSUInteger idx, BOOL *stop))block//NSEnumerationConcurrent(正向遍历,同时回调两次打印)    NSEnumerationReverse(反向遍历,一次一次打印)__block NSUInteger num = 0;[allAry enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {num++;NSLog(@"Options===obj:%@ idx:%ld stop:%ud",obj,(unsigned long)idx,num);}];//- (void)enumerateObjectsAtIndexes:(NSIndexSet *)s options:(NSEnumerationOptions)opts usingBlock:(void (^)(ObjectType obj, NSUInteger idx, BOOL *stop))block//指定范围的数组元素遍历NSRange indexRange = {1,3};NSIndexSet *set = [NSIndexSet indexSetWithIndexesInRange:indexRange];[allAry enumerateObjectsAtIndexes:set options:NSEnumerationReverse usingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {NSLog(@"AtIndexes===obj:%@ idx:%ld stop:%s",obj,(unsigned long)idx,stop);}];//- (NSUInteger)indexOfObjectPassingTest:(BOOL (^)(ObjectType obj, NSUInteger idx, BOOL *stop))predicate//循环判断是否满足指定条件,满足返回 元素下标 结束遍历,不满足一直遍历完数组返回垃圾值NSUInteger passingTestNum = [allAry indexOfObjectPassingTest:^BOOL(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {if ([obj isEqualToString:@"ff"]){return YES;}return NO;}];if (passingTestNum==1){;}//- (NSUInteger)indexOfObjectWithOptions:(NSEnumerationOptions)opts passingTest:(BOOL (^)(ObjectType obj, NSUInteger idx, BOOL *stop))predicate//正反向遍历//- (NSUInteger)indexOfObjectAtIndexes:(NSIndexSet *)s options:(NSEnumerationOptions)opts passingTest:(BOOL (^)(ObjectType obj, NSUInteger idx, BOOL *stop))predicate//指定范围+正反向遍历//- (NSIndexSet *)indexesOfObjectsPassingTest:(BOOL (^)(ObjectType obj, NSUInteger idx, BOOL *stop))predicate//指定范围遍历数组元素,如果满足条件返回当前元素下标,NSIndexSet *indexSet = [allAry indexesOfObjectsAtIndexes:set options:NSEnumerationConcurrent passingTest:^BOOL(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {if ([obj isEqualToString:@"d"]){return YES;}return NO;}];NSUInteger fir = indexSet.firstIndex;

NSArray (API详解)相关推荐

  1. 百度PaddleOCR及云平台OCR API详解及示例

    百度PaddleOCR及云平台OCR API详解及示例 目录 百度PaddleOCR及云平台OCR API详解及示例 使用百度开源的PaddleOCR 多个开源代码库比较

  2. Java 8 Stream API详解--转

    原文地址:http://blog.csdn.net/chszs/article/details/47038607 Java 8 Stream API详解 一.Stream API介绍 Java 8引入 ...

  3. 【小白学PyTorch】扩展之Tensorflow2.0 | 21 Keras的API详解(下)池化、Normalization

    <<小白学PyTorch>> 扩展之Tensorflow2.0 | 21 Keras的API详解(上)卷积.激活.初始化.正则 扩展之Tensorflow2.0 | 20 TF ...

  4. Android复习14【高级编程:推荐网址、抠图片上的某一角下来、Bitmap引起的OOM问题、三个绘图工具类详解、画线条、Canvas API详解(平移、旋转、缩放、倾斜)、矩阵详解】

    目   录 推荐网址 抠图片上的某一角下来 8.2.2 Bitmap引起的OOM问题 8.3.1 三个绘图工具类详解 画线条 8.3.16 Canvas API详解(Part 1) 1.transla ...

  5. EXT核心API详解(二)-Array/Date/Function/Number/String

    EXT核心API详解(二)-Array/Date/Function/Number/String Array类 indexOf( Object o )  Number object是否在数组中,找不到返 ...

  6. ServletFileUpload API详解

    ServletFileUpload1.ServletFileUpload upload=new ServletFileUpload(factory);创建一个上传工具,指定使用缓存区与临时文件存储位置 ...

  7. DiskFileItemFactory API详解

    核心API介绍1.DiskFileItemFactory作用:可以设置缓存大小以及临时文件保存位置. 默认缓存大小是 10240(10k).临时文件默认存储在系统的临时文件目录下.(可以在环境变量中查 ...

  8. java nio详解,Java NIO API详解

    Java NIO API详解 在JDK 1.4以前,Java的IO操作集中在java.io这个包中,是基于流的阻塞(blocking)API.对于大多数应用来说,这样的API使用很方 便,然而,一些对 ...

  9. 【java8新特性】——Stream API详解(二)

    一.简介 java8新添加了一个特性:流Stream.Stream让开发者能够以一种声明的方式处理数据源(集合.数组等),它专注于对数据源进行各种高效的聚合操作(aggregate operation ...

最新文章

  1. 漫画:臭长臭长的高频贪心面试题
  2. Linux C gbk utf-8编码转换
  3. ApiOperationSupport注解的使用
  4. shell 脚本学习及troubleshooting
  5. http和webservice接口区别
  6. 以太坊智能合约实现代币空投
  7. 数据结构详解之向量vector
  8. 易班自动答题脚本_自动答题脚本教程及源码分享(无视分辨率)
  9. AdventureWorks2012.mdf的使用
  10. 第三方登陆之微博登录
  11. NRF52832 SDK 15.2.0设置内部32768
  12. 激活pytorch环境
  13. Xcode生成IPA包
  14. 如何查找某个物种的基因组大小
  15. Intellij IDEA误删文件如何恢复
  16. Windows重置提示找不到恢复环境
  17. 微服务商城系统(四)商品管理
  18. 在C#控制台输出的爱心图案
  19. sed 首行加一行,末尾加一行
  20. ccleaner下载与简单设置

热门文章

  1. java实现scp敲代码_SCP 命令(自己总结)
  2. html标签 对word2vec,基于Word2Vec的中文短文本分类问题研究
  3. 使用Graphpad Prism绘制多因子图
  4. Revit二次开发_快速切换快捷键的插件
  5. Android OpenGL动态壁纸问题总结
  6. UE4中背景音乐的制作
  7. 截至 2005年11月29日 CSDN 单独任命制度下的5星用户名单
  8. python图片转手绘_通过Python将故宫的建筑物图片,转化为手绘图
  9. 医院如何选择适合自己的HIS系统
  10. 入职第一天,我辞职了:一份工作做多久才合适?