1. 数组的常用处理方式

//--------------------不可变数组

//1.数组的创建

NSString *s1 = @"zhangsan";

NSString *s2 = @"lisi";

NSString *s3 = @"wangwu";

//(1)

NSArray *array1 = [[NSArray alloc] initWithObjects:s1,s2,s3, nil];

NSLog(@"%@",array1); //等价于 array1.descripton

//(2)使用类方法创建

NSArray *array2 = [NSArray arrayWithObjects:s1,s2,s3, nil];

//(3)创建一个数组对象,同时往里面存入一元素

NSArray *array3 = [NSArray arrayWithObject:s1];

//(4)创建一个数组,此数组中的元素来自array1

NSArray *array4 = [NSArray arrayWithArray:array1];

NSLog(@"array4 = %@",array4);

//2.通过下标取元素

NSString *str1 = [array4 objectAtIndex:0];

//3.数组元素的个数

NSUInteger count = [array4 count];  //等价于:array4.count;

//4.判断数组中的是否包含某个元素

BOOL isContains = [array4 containsObject:@"zhangsan"];

NSLog(@"isContains:%d",isContains);

//5.查找某一个对象在数组中的下标位置

NSUInteger index = [array4 indexOfObject:@"wangwu"];

if (index == NSNotFound) {

NSLog(@"Not find elemnts");

} else {

NSLog(@"index = %ld",index);

}

//6.链接数组中的字符串(前提:数组中都是字符串)

NSString *joinString = [array4 componentsJoinedByString:@","];

NSLog(@"joinString = %@",joinString);

//7.访问数组最后一个元素

NSString *lastObj = [array4 lastObject];  //array4.lastObject

NSLog(@"lsatObj = %@",lastObj);

//8.再原路的数组后面添加一个元素

NSArray *array5 = [array4 arrayByAddingObject:@"zhaolia"];

NSLog(@"array5 = %@",array5);

//取对应下标元素

int idx=4;

if (idx <array5.count) {

NSString *s = [array5 objectAtIndex:idx];

NSLog(@"s = %@",s);

}

//--------------数组的遍历

//1.普通遍历

for (int i=0; i<array5.count; i++) {

NSString *str = [array5 objectAtIndex:i];

NSLog(@"%@",str);

}

//快速遍历

for (NSString *s in array5) {

NSLog(@"%@",s);

}

//4.4之后的优化

//1.创建一个素组

NSArray *array7 = @[s1,s2,s3]; //等价于:NSArray *array7 = [NSArray arrayWithObjects:s1,s2,s3,nil];

NSLog(@"array7 = %@",array7);

NSString *str = array7[0];

NSLog(@"array[7] = %@",str);

//------------------可变数组

//初始化,设定元素个数为5,可以更改的。(继承自NSArray)

NSMutableArray *mutableArray = [NSMutableArray arrayWithCapacity:5];

//想数组中添加一个元素

[mutableArray addObject:@"aaa"];

//向数组中指定下标插入元素

[mutableArray insertObject:@"ccc" atIndex:0];

NSLog(@"%@",mutableArray);   //原来位置元素后移

//移除最后一个元素

[mutableArray removeLastObject];

NSLog(@"移除最后元素后:%@",mutableArray);

//移除指定元素

[mutableArray removeObject:@"aaa"];

//移除指定下标元素

[mutableArray removeObjectAtIndex:0];

//向数组中添加数组

[mutableArray addObjectsFromArray:array1];

//1.创建可变数组

NSString *t1 = @"zhangsan ";

NSString *t2 = @"lisi";

NSString *t3 = @"wangwu ";

//        NSMutableArray *mArray1 = @[s1,s2,s3];//wrong.这里创建了一个不可变数组

NSMutableArray *mArray1 = [[NSMutableArray alloc] initWithObjects:s1,s2,s3, nil];

//创建数组时,开辟3个空间用于存储元素,存储超过容量,数组自动增大空间

NSMutableArray *mArray2 = [[NSMutableArray alloc] initWithCapacity:3];

NSMutableArray *mArray3 = [NSMutableArray arrayWithCapacity:3];

//2.添加元素

[mArray2 addObject:t1];

[mArray2 addObject:t2];

[mArray2 addObject:t3];

NSLog(@"mArray2= %@",mArray2);

//将mArray2 中元素添加到mArray3中

//        [mArray3 addObjectsFromArray:mArray2];

//将mArray2作为二维数字添加

[mArray3 addObject:mArray2];

NSLog(@"mArray3 = %@",mArray3);

//3.插入元素

[mArray2 insertObject:@"Jack" atIndex:0];

NSLog(@"mArray2 = %@",mArray2);

//4.替换元素

[mArray2 replaceObjectAtIndex:0 withObject:@"John"];

NSLog(@"替换:%@",mArray2);

//5.互换两个元素的位置

[mArray2 exchangeObjectAtIndex:3 withObjectAtIndex:0];

NSLog(@"mArray2 = %@",mArray2);

//6.删除元素

//6.1根据下标删除

[mArray2 removeObjectAtIndex:2];

NSLog(@"mArray2 = %@",mArray2);

//6.2删除最后一个元素

[mArray2 removeLastObject];

NSLog(@"mArray2 = %@",mArray2);

//6.3删除指定的对象

//[mArray2 removeObject:@"zhangsan"];

//6.4删除所有元素

[mArray2 removeAllObjects];

NSLog(@"mArray2 = %@",mArray2);

iOS - 数组(NSArray)的更多相关文章

  1. IOS数组NSArray与NSMutableArray知识点

    此文是对数组NSArray与NSMutableArray知识点的总结,主要是一些常见的操作,别外一些操作见其相应的文档,下面的代码部分还运用的第三方插件BlocksKit相结合: a:Foundati ...

  2. iOS - OC NSArray 数组

    前言 @interface NSArray<__covariant ObjectType> : NSObject <NSCopying, NSMutableCopying, NSSe ...

  3. IOS 数组分组 Grouped NSArray

    NSMutableSet *set=[NSMutableSet set]; [_list enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BO ...

  4. iOS数组使用

    相关链接: ios数组基本用法和排序 NSArray 排序汇总 iOS 数组排序方法 IOS-筛选数组内的元素 关于EnumerateObjectsUsingBlock和for-in之间的较量 [iO ...

  5. [BS-02] iOS数组、字典、NSNumber 新写法—— @[]、@{}

    IOS数组.字典.NSNumber 新写法—— @[].@{}   //标准写法 NSNumber * number = [NSNumber numberWithInt:]; NSArray * ar ...

  6. iOS 数组字典操作

    iOS开发中需要大量对dictionary和array进行操作,因此我们需要一种更加安全可靠的操作方法来避免不必要的crash.当然可以通过自定义dictionary 和array重载增删改查的方法来 ...

  7. iOS 将NSArray、NSDictionary转换为JSON格式进行网络传输

    http://blog.csdn.net/worldzhy/article/details/49982491 将NSArray.NSDictionary转换为JSON格式进行网络传输,是经常用到的,但 ...

  8. 从deque到std::stack,std::queue,再到iOS 中NSArray(CFArray)

    从deque到std::stack,std::queue,再到iOS 中NSArray(CFArray) deque deque双端队列,分段连续空间数据结构,由中控的map(与其说map,不如说是数 ...

  9. Object-C,数组NSArray

    晚上回来,写了2个iOS应用程序. 就是在界面中,展示标签.一种是手动构造界面,然后绑定事件.另外一种是,使用自带的界面作为容器,但是手动向里面放其它界面元素. 书中的观点是,使用图形化界面,构造界面 ...

随机推荐

  1. OC基础之方法和参数的命名规范

    以前学过C/C++/Java/C#语言的童鞋可能刚开始对于OC的方法和参数的命名规范大为不爽 举例来说,如下一个OC方法: - (void)tableView:(UITableView *)table ...

  2. Approaching the Fun Factor in Game Design

    I recently did some research on this and talked to Dr. Clayton Lewis (computer Scientist in Residenc ...

  3. 目标检測的图像特征提取之(一)HOG特征

    1.HOG特征: 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检測的特征描写叙述子.它通过计算和统计图像局部区 ...

  4. 【JavsScript】转载---如何成为优秀的前端

    题记 做好前端 关于离职 如何成为优秀的前端 书籍推荐 博客推荐 源码阅读 去面试 14年计划 招聘信息 题记 四月前,低迷.失志踌躇不前形容自己再好不过,中途来了一次彻底的醒悟,于是我发现自己变得勤 ...

  5. Win7 IE故障:APPCRASH,d3d9.dll,c0000005

    问题:        今天使用使用IE登录某网址,发现总是报错,如下图,无法浏览.         解决方案:       主要讲IE的呈现方案修改即可,如下步骤:       在IE的[Intern ...

  6. [原创]SSAS-引用维度与多数据源、多数据源视图引发分区错误

    背景:       最近有个项目,有32家分公司,集团总部需要取这个32家分公司数据做分析,由于每个分公司的数据都比较庞大,所以最终方案是每个分公司一个DW,在cube搭建过程中将每个公司数据作为一个 ...

  7. 分享一款页面视差滚动切换jquery.localscroll插件

    今天给大家分享一款页面视差滚动切换jquery.localscroll插件. 滚动鼠标液动条看下页面的切换效果.该插件适用浏览器:IE8.360.FireFox.Chrome.Safari.Opera ...

  8. Lua读写文件

    文件读写 文件读写对制作游戏很有帮助.可以调用别的文件中的代码,保存最高分.游戏存档.玩家状态等信写到文件中. 首先,让我们看一个简单的命令:dofile.这个命令会读入另一个文件的代码并立即执行. ...

  9. iOS企业应用Profile制作流程

    第一步:企业版iDP申请完成以后,访问iOS Dev Center:https://developer.apple.com/devcenter/ios/index.action 第二步:点击Log I ...

  10. C中存储类、链接和内存管理

    在C语言中,有5种不同的存储类型,即存储类.在介绍存储类之前,需要首先简单介绍几个术语.如下: 作用域:描述程序中可以访问一个标识符的一个或多个区域.一个C变量的作用域可以是代码块作用域.函数原型作用 ...