1.OC的数组成员是任意的对象指针 与C中的链表结构类似(以nil结尾) 一切的数组操作不能越界
OC的数组分为不可变数组NSArray可变数组NSMutableArray
- NSArray*array=[[NSArrayalloc]initWithObjects:@"one",@"two",@"three",nil];
- NSLog(@"%@",[arrayobjectAtIndex:0]);//通过下标获取数组成员(下标从0开始)
- NSLog(@"%ld",[arraycount]);//获取数组有效成员个数(不包括nil)
- for(i=0;i<[arraycount];i++){//遍历数组(C方法)
- NSLog(@"%@",[arrayobjectAtIndex:i]);
- }
- NSLog(@"%@",array);//(OC)查看数组内容(先给array发送description消息,然后给每个成员都发送一个description消息)
- NSArray*array1=[[NSArrayalloc]initWithArray:array];//创建数组对象相当于拷贝
- NSArray*arry2=[NSArrayarrayWithArray:array];//创建数组对象相当于拷贝
- NSEnumerator*enumer=[arrayobjectEnumerator];//正序枚举器
- //创建一个枚举器把数组的每个元素的地址一次赋给枚举器,然后建立起某种关联(枚举器只能用来读数组成员)
- //枚举时会和数组创建某种关联(修改监视器/迭代器)限制枚举的同时不能修改元素只能读不能写
- idobj;
- //第一次循环把数组的第一个元素赋给obj第二次循环把第二个数组元素赋给obj
- while(obj=[enumernextObject]){//遍历数组
- NSLog(@"%@",obj);
- }
- //快速枚举第一次循环把array的第一个元素赋给ob第二次循环把array的第二个元素赋给ob直到nil(只能读不能改)
- for(idobinarray){
- NSLog(@"%@",ob);
- }
- //逆序输出数组(创建逆序枚举器第一次循环把最后一个元素赋给obj)
- NSEnumerator*enumer1=[arrayreverseObjectEnumerator];
- while(obj=[enumer1nextObject]){
- NSLog(@"%@",obj);
- }
- if([objisKindOfClass:[Dogclass]])//获取类的类型判是否是指定类的对象
- if([objisMemberOfClass:[Dogclass]]){
- }
2.不可变数组
- -------查找
- NSArray*array=[[NSArrayalloc]initWithObjects:@"one",@"two",@"three",@"one",nil];
- NSUIntegerindex=[arrayindexOfObject:@"one123"];//返回第一个找到的数组成员对应的下标找不到返回NSNotFound
- index=[arrayindexOfObject:@"one"inRange:NSMakeRange(1,3)];//在指定范围内查找
- if(index!=NSNotFound){
- NSLog(@"%ld",index);
- }
- ----抽取组成新的数组
- NSArray*array1=[arrayobjectsAtIndexes:[NSIndexSetindexSetWithIndexesInRange:NSMakeRange(1,3)]];
- 《数字集合》
- NSIndexSet这是个数字集合类
- [NSIndexSetindexSetWithIndexesInRange:NSMakeRange(1,3)]产生一个数字集合
3.可变数
- NSMutableArray*array=[[NSMutableArrayalloc]initWithObjects:@"one",@"two",@"three",@"four",nil];
- [arrayaddObject:@"five"];//在数组尾部插入元素
- [arrayinsertObject:@"six"atIndex:5];//在数组指定下标位置插入元素(不能越界,最大值为length)
- [arrayremoveObject:@"six"];//删除指定元素(数组中出现的所有位置都将被删除)
- [arrayremoveObject:@"two"inRange:NSMakeRange(0,3)];//从指定下标位置开始的指定长度内删除指定元素
- [arrayremoveLastObject];//删除最后一个元素
- [arrayremoveAllObjects];//删除所有元素
- [arrayreplaceObjectAtIndex:3withObject:@"ios"];//将指定下标位置元素替换为指定的元素
- [arrayexchangeObjectAtIndex:0withObjectAtIndex:3];//将指定下标的两个元素进行交换
4.字符串分割与拼接
- //@""空的字符串对象
- -------分割
- NSString*ptr=@"Iamaman";
- NSArray*array=[ptrcomponentsSeparatedByString:@""];//将字符串整体作为分割条件返回值为NSArray不可变数组
- NSMutableArray*array1=[NSMutableArrayarrayWithArray:array];//若修改,则将NSArray转化为NSMutableArray
- NSArray*array2=[ptrcomponentsSeparatedByCharactersInSet:[NSCharacterSetcharacterSetWithCharactersInString:@","]];//以字符串中的字符作为分割条件进行分割
- 《字符集合》
- NSCharacterSet这是个字符集合类
- [NSCharacterSetcharacterSetWithCharactersInString:@","]//把字符串转化为字符集合
- -------拼接
- NSString*str=[arraycomponentsJoinedByString:@""];
- 若分割条件出现在开头或者结尾,则会出现空串@"",如果不需要,则需要转化成NSMutableString对空串进行处理
- func1:[array1removeObject:@""];//找到空串直接删除
- func2:for(idobjinarray1){
- if([objlength]==0)//空串的长度为0
- if([objisEqualToString:@""])//与空串进行比较(字符串是不能进行==比较的,要使用函数)
- }