objective-c 学习 数组
概述:
- OC里面的数组是一种线性结构数据类型,在foundation框架之内。分为可变数组(NSArray)与不可变数组(NSMultiArray),其中MultiArray 继承自 NSArray ,所以NSArray的各种方法,NSMultiArray一样可以使用。
- 数组可以通过下标索引到相应的对象。
- NSarray和NSmultiArray里面存储的内容只能是——对象(类的实例) 。所以基本数据类型不能直接存储进去,可以使用NSValue或者NSNumber封装存储进去
数组数据模型:
- OC里面的数组是一种线性的数据结构,它的数据原型是线性表.下图展示了线性表的抽象数据类型(定义+操作)
- 操作有8种:大约是:增删查改 始数找空
数组的常见操作
IOS中的数组,是线性表这个抽象数据结构的一种具象的实现,下面就展示一下苹果公司的程序员们如何实现这个线性结构的。
1初始化:(初始化操作,建立一个数组对象,并且赋值)
1 类方法初始化:(这里注意一下苹果的命名规范,类方法一般是 classWith ,命名规范其实很重要),这里有四种情况:分别是一个对象,多个对象,使用数组,从文件 初始化
// 类方法命名规范 // 初始化一个 因为是不可变的 所以实用性不强 NSArray *arr1=[NSArray arrayWithObject:@"hello"]; //多个以nil作为数组的结束 NSArray *arr2=[NSArray arrayWithObjects:@"1",@"2", nil]; // 元素指向了同一个位置 NSArray *arr3=[NSArray arrayWithArray:arr2]; // 从文件初始化数组 // NSArray *arr3=[NSArray arrayWithContentsOfURL:<#(NSURL *)#>];
2 实例方法初始化:
NSArray *arr4=[[NSArray alloc] initWithArray:arr1];
3 可变数组的初始化
// 添加了一个空的数组 NSMutableArray *mulArray1=[NSMutableArray array]; // 初始化,加上容量 NSMutableArray *mulArray=[NSMutableArray arrayWithCapacity:1];
2 数组长度:(返回数组元素个数)
// 元素个数 int count=[arr2 count];
3 查:将数组第i个对象返回,
// 访问哪个元素 NSString *string1=[arr1 objectAtIndex:0];
// 查找最后一个对象 NSLog(@"%@",[arr2 lastObject]);
遍历
// 快速遍历 for(/*或者ID*/NSString *string in mulArray) { }
4 找:根据对象,查找数组,如果存在相同的对象,返回序号,否则返回false
// 查询对象位置 int objIndex=[arr2 indexOfObject:@"2"];
// 判断是否有这个元素 这个是判断有没有 if(![arr2 containsObject:@"a"]) { NSLog(@"没有"); }
5 增:在第i个位置增加元素
// 追加对象,返回新的数组 NSArray *arr11=[arr1 arrayByAddingObject:@"haha"];
不可变数组无法对数组进行修改,这里的操作都是可变数组的,// 添加对象 for(int i=0;i<20;i++) { [mulArray addObject:@"aaa"]; [mulArray addObject:@"bbb"]; } // 根据索引位置添加一个元素 [mulArray insertObject:@"bbb" atIndex:1];
6 删:删除指定位置元素
// 删除 // 删除最后一个 [mulArray removeLastObject]; // 删除相应元素 [mulArray removeObject:@"aaa"]; // 指定坐标删除 [mulArray removeObjectAtIndex:3]; // 根据数组来删除 [mulArray removeObjectsInArray:arr1];
7 改:修改指定位置元素(就是替换)
// 替换 [mulArray replaceObjectAtIndex:0 withObject:@"1"];
8 空: 判空,返回true false
IOS中没有数组判空操作,你可以用count==0来判断
欢迎转载,转载请注明出处:http://blog.csdn.net/zhenggaoxing/article/details/43559869
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。