不可变数组(NSArray)与可变数组(NSMutableArray)

OC中的数组与C中的数组区别
1.C中的数组成员必须一致,OC不一定
2.OC中的数组成员必须是对象,不能是C中的基本数据类型,如int,float…

数组的操作与字符串的操作有点类似
1.NSArray的定义赋值

NSArray *array1=[[NSArray alloc]init];
NSArray *array2=[NSArray array];
//创建一个里面有一个元素的不可变数组
NSArray *array3=[NSArray arrayWithObject:@"Rick"];
//创建一个里面有多个元素的不可变数组
NSArray *array4=[NSArray arrayWithObjects:@"Rick",@"Jack"@"leo", nil];
//nil只能出现在数组的最后,不能再数组中间存放nil,因为nil是NSArray的结束标志

//新语法
NSArray *array5=@[@"Rick"];
NSArray *array6=@[@"Rick",@"Jack",@"Leo"];
//根据一个数组,产生一个新的数组
NSArray *array7=[NSArray arrayWithArray:array6];

NSArray *array7=@[@3,@4,@5];
注意一些情况
 //@3  相当于[NSNumber numberWithInt:3]
 //@YES  相当于[NSNumber numberWithBool:YES];
 因为数组成员是对象,这种情况下相当于已经封装了
 还有注意区分
 //@5   这种是为int类型的对象
 //@"5" 这种是为NSString类型的对象

2.访问数组元素 求数组元素个数

//访问数组中的元素
//访问  array6中的第一个元素
 NSString *str1= [array6 objectAtIndex:0];
 //访问所有元素
  for (int i=0; i<[array6 count]; i++) {
      NSLog(@"%@",[array6 objectAtIndex:i]);
        }
//新语法访问数组中元素
NSString *str2 =array6[0];
NSArray *array7=@[@3,@4,@5];

//求数组中元素个数
NSUInteger count=array6.count;
//[array6 count]

3.数组的查找

本地文件与网络文件读取数组与字符串操作类似
[NSArray arrayWithContentsOfFile:@""];
[NSArray arrayWithContentsOfURL:[NSURL URLWithString:@""];

//通过数组元素查找下标(indexOfObject)
NSUInteger index=[array6 indexOfObject:@"Rick"];
NSLog(@"index=%ld",index);

//判断数组中是否存在某个元素(containsObject)
if ([array6 containsObject:@"Rick"])
 {
     NSLog(@"包含此元素");
}

3,数组的增加

//数组中增加一个元素(arrayByAddingObject)
NSArray *newArray1= [array6 arrayByAddingObject:@"xiangjie"];

//另一个数组添加到另一个数组中 (arrayByAddingObjectsFromArray)     
NSArray *newArray2=[array10 arrayByAddingObjectsFromArray:array6];//新数组{10在前 6在后}

//数组中添加字符串,将数组变为字符串(componentsJoinedByString)
NSArray *array11=@[@"123",@"456",@"789",@"000"];
NSString *string2= [array11 componentsJoinedByString:@"-"];
NSLog(@"%@",string2);

//字符串中以某字符串为分隔符,变成数组(componentsSeparatedByString)
 NSArray *array12=[string2 componentsSeparatedByString:@"-"];
NSLog(@"%@",array12);

使用NSArray 注意事项
1.数组越界
2.不能在数组中间存放nil ,nil是数组结束标志
3.数组会对加入其中的对象自动把引用加一

可变数组(NSMutableArray)
与字符串一样,可变数组可变数组(NSMutableArray)是不可变数组(NSArray)的子类

1.可变数组的定义

//初始化方法
//初始化一个空的数组
NSMutableArray *mArray = [NSMutableArray array];
//初始化一个里面有一个元素的数组
 NSMutableArray *mArray2=[NSMutableArray arrayWithObject:@"1"];
//初始化一个里面有多个元素的数组
NSMutableArray *mArray3 = [NSMutableArray arrayWithObjects:@"1",@"2",@"3", nil];
//根据另一个数组创建另一个数组
NSMutableArray *mArray4=[NSMutableArray arrayWithArray:mArray3];

//可变数组独有的初始化方法
NSMutableArray *mArray5=[NSMutableArray arrayWithCapacity:10];
//这里的10也是与字符串一样,只是初始化的容量,不会限制大小

2

增加
//在数组末尾添加一个元素(addObject):
NSMUtableArray *mArray=[NSMutableArray arrayWithObjects:@"1",@"2",@"3", nil];
[mArray addObject:@"5"];
NSLog(@"%@",mArray3);

//在数组指定位置插入一个元素(insertObject)
[mArray3 insertObject:@"4" atIndex:3];//index插入后所处的位置

//替换,将数组指定位置上的元素替换成用户想要的元素(replaceObjectAtIndex: withObject:@"")
[mArray replaceObjectAtIndex:1 withObject:@"Rick"];

//交换,将数组指定位置上的两个元素交换位置(exchangeObjectAtIndex: withObjectAtIndex:)
 [mArray exchangeObjectAtIndex:2 withObjectAtIndex:3];

//删除
//删除指定元素 
[mArray3 removeObject:@"1"];
//删除指定位置元素
[mArray3 removeObjectAtIndex:1];
//删除最后一个元素
[mArray3 removeLastObject];
//删除所有元素
[mArray3 removeAllObjects];

数组的遍历
使用枚举器 与 快速枚举

1.系统提供的枚举器

如
:NSMutableArray *newArray=[NSMutableArray arrayWithObjects:@"1",@"2",@"3",@"4",@"5", nil];
NSEnumerator *enumerator=[newArray objectEnumerator];
id obj;
 while (obj = [enumerator nextObject]) {
        NSLog(@"%@",obj);
        };

2快速枚举forin

 for (id element in newArray) {
            NSLog(@"element=%@",element);
        }

注意:
使用快速枚举,枚举器遍历数组元素期间,不要添加或者删除数组元素,否则运行时候程序会崩溃

数组的运用要与字符串的使用 ,两者要灵活的结合在一起使用!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值