NSArray的一些用法

NSArray只允许装OC对象,并且不能装空值,空代表数组元素的结束

#pragma mark - NSArray的基本用法
// 创建一个空数组
NSArray *array = [NSArray array];
// 创建有一个元素的数组
array = [NSArray arrayWithObject:@""];
// 创建有多个元素的数组
array = [NSArray arrayWIthObjects:@"a",@"b",nil ];//不能装nil空指针,空值代表数组元素结束
// 将一个数组赋值给一个数组
+ (instancetype)arrayWithArray:(NSArray *)array;
// 获取元素的个数
int count = [array count]; //和 count = array.count; 相同,都是调用get方法
// 是否包含一个元素
- (bool)containsObject:(id)anObject;
// 返回最后一个元素
- (id) lastObject;
// 获取index位置的元素
- (id)objectAtIndex:(NSUInteger) index;
// 获取元素的位置
- (NSUInteger) indexOfObject:(id)anObject;
// 在range范围内查找元素的位置
- (NSUInteger) indexofObject:(id)anObject inRange:(NSRange)range;
// 比较两个集合内容是否相同
- (Bool) isEqualToArray:(NSArray *)otherArray;
// 返回两个集合中第一个相同的对象元素
- (id) firstObjectCommonWithArray:(NSArray *)otherArray;
#pragma mark - NSArray的高级用法
//让集合里面的所有元素都执行aSelector这个方法
- (void)makeObjectsPerformSelector:(SEL)aSelector;
//让集合里面的所有元素都执行aSelector这个方法,给这个方法添加参数,但是只支持一个参数
- (void)makeObjectsPerformSelector:(SEL)aSelector withObject:(id)argument
//添加一个元素,返回一个新的NSArray(方法调用者本身没有发生变化)
- (NSArray *)arrayByAddingObject:(id)anObject
//添加otherArray的所有元素,返回一个新的NSArray(方法着本身没有改变)
- (NSArray *) arrayByAddingObjectsFromArray:(NSArray *) otherArray;
//截取range范围的数组
- (NSArray *) subarrayWithRange:(NSRenge)range;
//用separator做拼接符,拼接成一个字符串
- (NSString *) componentsJoinedByString:(NSString *)separator
//将NSArray持久化到文件中去
- (Bool) writeToFile:(NSString *)path atomically:(Bool)useAuxiliaryFile
#pragma mark - NSArray的遍历
// 方法一:普通遍历(利用for循环)
void arrayFor1(){
NSArray *array = [NSArray arrayWithObjects:@"",@"",@"",nil];
int count = array.count;
for(int i=; i<count; i++){
id obj = [array objectAtIndex:i];
NSLog(@"%i-%@",i, obj);
}
}
// 方法二:快速遍历
void arrayFor2(){
NSArray *array = [NSArray arrayWithObjects:@"",@"",@"",nil];
int count = array.count;
int i=;
for(id obj in array){
NSLog(@"%i-%@",i, obj);
i++;
}
}
// 方法三:利用block遍历
void arrayFor3(){
NSArray *array = [NSArray arrayWithObjects:@"",@"",@"",nil];
[array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
NSLog(@"%zi->%@",idx, obj);
// *stop = YES; //改变外边的Bool,终止遍历
}];
}
// 方法四:利用迭代器
// 先介绍一下-->NSEnumerator迭代器:集合的迭代器,可以用于遍历集合元素,NSArray 有相应的方法来获取迭代器
//获取一个正序遍历的迭代器
- (NSEnumerator *) objectEnumerator;
//获取一个反序遍历的迭代器
- (NSEnumerator *) reverseObjectEnumerator;
@常用方法:
//获取下一个元素
- (id) nextObject;
//获取所有的元素
- (NSArray *) allObjects
void arrayFor4(){
NSArray *array = [NSArray arrayWithObjects:@"",@"",@"",nil];
NSEnumerator *enumerator = [array objectEnumerator];// 返回数组的迭代器
//如果放到遍历之后,则取到空,原因是,遍历完了,就没值了
NSArray *array2 = [enumerator allObjects];
NSLog(@"array2=%@", array2); //获取下一个需要遍历的元素
id obj = nil;
while (obj = [enumerator nextObject]) {
NSLog(@"obj=%@", obj);
}
}

使用block 块遍历整个数组

这个block 需要三个参数:

  • id obj 表示数组中的元素
  • NSUInteger idx 标示元素的下标
  • boolbool *stop 是一个bool类型的参数
  • NSEnumerationReverse 标示 是从前向后遍历,还是从后往前遍历

例一:

    NSArray *array = [NSArray arrayWithObjects:@"wendy",@"andy",@"tom",@"test", nil];
[array enumerateObjectsUsingBlock:^(id str,NSUInteger index, BOOL* te){
NSLog(@"%@,%d",str,index);
}];

例二:

    NSArray *array = [NSArray arrayWithObjects:@"wendy",@"andy",@"tom",@"test", nil];

    [array enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:^(id str,NSUInteger index, BOOL* te){
NSLog(@"%@,%d",str,index);
}];

参考网站:

http://www.jb51.net/article/72539.htm

Objective-C中NSArray的基本用法示例的更多相关文章

  1. shell中字典的一个用法示例

    1. shell中字典的用法示例, 数组用法同字典 2. 以上使用sell配合字典实现的功能, 使用awk能轻松搞定, 如下: awk '{print $2}' file.txt | sort | u ...

  2. C#中this指针的用法示例

    这篇文章主要介绍了C#中this指针的用法,对初学者而言是非常重要的概念,必须加以熟练掌握,需要的朋友可以参考下. 本文实例展示了C#中this指针的用法,对于初学者进一步牢固掌握C#有很大帮助,具体 ...

  3. js中setTimeout/setInterval定时器用法示例

    js中setTimeout(定时执行一次)和setInterval(间隔循环执行)用法介绍. setTimeout:在指定的毫秒数后调用指定的代码段或函数:setTimeout示例代码 functio ...

  4. LINQ中的连接(join)用法示例

    Linq中连接主要有组连接.内连接.左外连接.交叉连接四种.各个用法如下. 1. 组连接 组连接是与分组查询是一样的.即根据分组得到结果. 如下例,根据publisther分组得到结果. 使用组连接的 ...

  5. JS中数组Array的用法示例介绍 (转)

    new Array() new Array(len) new Array([item0,[item1,[item2,...]]] 使用数组对象的方法: var objArray=new Array() ...

  6. awk中next以及getline用法示例

    在awk中,如果调用next,那么next之后的命令就都不执行了.此行文本的处理到此结束,开始读取下一条记录并操作. 实例如下: [plain] view plain copy zoer@ubuntu ...

  7. jQuery中$.fn的用法示例介绍

    $.fn是指jquery的命名空间,加上fn上的方法及属性,会对jquery实例每一个有效,下面有个不错的示例,喜欢的朋友可以参考下 如扩展$.fn.abc(),即$.fn.abc()是对jquery ...

  8. SIP中OPTIONS方法的用法及示例

    SIP中OPTIONS方法的用法及示例 用OPTIONS方法实现Keep Alive SIP keep-alive方法

  9. [转]Linux中find常见用法示例

    Linux中find常见用法示例[转]·find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \;find命令的参 ...

随机推荐

  1. PAT甲级1131 Subway Map【dfs】【输出方案】

    题目:https://pintia.cn/problem-sets/994805342720868352/problems/994805347523346432 题意: 告诉你一个地铁线路图,站点都是 ...

  2. Luogu P3919【模板】可持久化数组(可持久化线段树/平衡树)

    题面:[模板]可持久化数组(可持久化线段树/平衡树) 不知道说啥,总之我挺喜欢自己打的板子的! #include<cstdio> #include<cstring> #incl ...

  3. 业界微服务楷模Netflix是这样构建微服务技术架构的

    1. 如不考虑组织架构,直接切入技术架构(很多架构师的通病),则失败风险巨大. https://mp.weixin.qq.com/s/C8Rdz9wFtrBKfxPRzf0OBQ

  4. isinstance与type的区别

    1.isinstance()内置函数 python中的isinstance()函数是python的内置函数,用来判断一个函数是否是一个已知类型.类似type. 2.用法: isinstance(obj ...

  5. DBGridEh表尾显示合计 .....

    设置如下就可以了..... FooterRowCount  : 1 SumList--------Active:=true 双击 DBGridEh  加入所需要的列....然后在 需要合计的..... ...

  6. 转:Spring系列之beanFactory与ApplicationContext

    原文地址:Spring系列之beanFactory与ApplicationContext 一.BeanFactoryBeanFactory 是 Spring 的“心脏”.它就是 Spring IoC ...

  7. 《mongoDB》索引

    一:基础操作 创建单列索引 语法: >db.collection.createIndex(keys, options) 语法中 Key 值为你要创建的索引字段,1 为指定按升序创建索引,如果你想 ...

  8. 使用Maven根据WSDL生成生成Java代码

    转载:https://blog.csdn.net/pzasdq/article/details/52601473 为便于自己学习,整理 修改pom.xml <project xmlns=&quo ...

  9. AutoML初创公司探智立方:模型的物竞天择与适者生存

    从回归分析的出现到深度学习的蓬勃发展,这条算法的进化路线与其说是「机器替代人」,不如说是「机器帮助人类完毕我们不擅长的事」. 这份「不擅长」列表里有「不擅长从大量数据中寻找规律」.「不擅长同一时候完毕 ...

  10. C# install-package:"xx"已拥有为“xxx”定义的依赖项

    可能 nuget自身的版本落后于适配程序包的版本 Visual Studio 2013 更新 NuGet 包管理器 Ø  前言 使用 Visual Studio 中的 NuGet 包管理器下载程序时, ...