0C-数组

数组:在OC中,数组是有序的对象的集合,用来储存对象的有序列表。和C数组不同的是,数组中的成员不需要数据类型一致,但是成员必须是对象,不能是C语言中的基本数据类型,如int,float等。
数组和字符串一样,也存在可变数组与不可变数组,可变数组是不可变数组的子类。
使用数组前要先创建对象,无论是可变数组还是不可变数组都可以当做方法的参数或返回值来使用。


不可变数组 NSArray 语法

//初始化,创建一个空的数组,有以下方法
NSArray *array1 = [[NSArray alloc] init];
NSArray *array2 = [NSArray array];
//也可以用新语法创建,方法如下
NSArray *array3 = @[@"jimuta"];
NSArray *array4 = @[@"jimuta",@"jack",@"leo"];
//创建一个里面有一个元素的不可变数组
NSArray *array5 = [NSArray arrayWithObject:@"jimuta"];
//创建一个里面有多个元素的不可变数组
NSArray *array6 = [NSArray arrayWithObjects:@"jimuta",@"jacak",@"leo", nil];
//根据一个数组产生新的数组
NSArray *array7 = [NSArray arrayWithArray:array6];
//从本地读取数组文件
[NSArray arrayWithContentsOfFile:@""];
//从网络读取数据文件
[NSArray arrayWithContentsOfURL:[NSURL URLWithString:@"http://www.baidu.com"]];
//求数组中元素个数,使用语法 count 
NSUInteger count = array6.count;
//访问数组中的元素
//访问 array6 中的第一个元素,使用 objectAtIndex:(),括号内填入一个下标   
NSString *str = [array6 objectAtIndex:0];
//同样,我们也有新语法可以访问数组中的某个元素
NSString *str2 = array6[0];
//我们可以通过下标访问某个元素,相反得也可以通过某个元素找出它的下标
NSUInteger index = [array6 indexOfObject:@"jimuta"];
//此时 index 可以获得元素"jimuta"的下标,数值为0
//判断某个数组是否存在某个元素,使用 containsObject 进行查找判断
if ([array6 containsObject:@"jimuta"]) {
    NSLog(@"包含此元素");
}
else{
    NSLog(@"不包含此元素");
}
//向不可变数组添加一个元素
NSArray *newArray1 = [array6 arrayByAddingObject:@"xiangjie"];
//向不可变数组添加另外一个数组
NSArray *newArray2 = [array6 arrayByAddingObjectsFromArray:array6];
//我们可以通过一个符号,将一个数组里面的元素连接起来,并输出成字符串,实现如下:
NSArray *array11 = @[@"123",@"456",@"789",@"000"];
NSString *string = [array11 componentsJoinedByString:@"~"];
//以上代码输出结果为:123~456~789~000
//同样,我们也可以将一个有符号相连的字符串消除符号,使其每个元素都断开,重新变成数组,实现如下:
NSArray *array12 = [string componentsSeparatedByString:@"-"];
//以上代码输出结果为(123,456,789,000)

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


不可变数组 NSMutableArray 语法

//因为 NSMutableArray 是 NSArray 的子类,所以 NSArray 的方法NSMutableArray 同样也可以使用,与 NSArray 相同,代码如下:
//初始化一个空的数组
NSMutableArray *mArray1 = [NSMutableArray array];

//初始化一个只有一个元素的数组
NSMutableArray *mArray2 = [NSMutableArray arrayWithObject:@"1"];

//创建一个里面有多个元素的数组
NSMutableArray *mArray3 = [NSMutableArray arrayWithObjects:@"1",@"2",@"3", nil];

//根据另一个数组创建新的数组
NSMutableArray *mArray4 = [NSMutableArray arrayWithArray:mArray3];

//从本地或网络读取数组
NSMutableArray *mArray6 = [NSMutableArray arrayWithContentsOfFile:@""];
NSMutableArray *mArray7 = [NSMutableArray arrayWithContentsOfURL:[NSURL URLWithString:@"http://www.baidu.com"]];

//注意: NSMutableArray 有自己独特的初始化方法,实现如下:
NSMutableArray *mArray5 = [NSMutableArray arrayWithCapacity:10];
//在数组末尾添加元素
[mArray3 addObject:@"5"];

//在下标索引处指定替换
[mArray3 insertObject:@"4" atIndex:3];

//替换,将数组指定位置上的元素替换成想要的元素
[mArray3 replaceObjectAtIndex:1 withObject:@"jimuta"];

//交换,将数组指定位置上的两个元素交换位置,我们填入的两个都是下标
[mArray3 exchangeObjectAtIndex:2 withObjectAtIndex:3];
//删除功能
//我们重新定义一个数组 newmArray ,并添加五个元素
NSMutableArray *newmArray = [NSMutableArray arrayWithObjects:@"1",@"2",@"3",@"4",@"5",nil];

[newmArray removeObject:@"1"];//删除指定内容
//指定删除内容为"1",运行结果为:2,3,4,5

[newmArray removeObjectAtIndex:1];//删除指定位置
//指定删除下标为1的元素,运行结果为:2,4,5

[newmArray removeLastObject];//删除最后一个元素
//删除最后一个元素,运行结果为:2,4

[newmArray removeAllObjects];//删除所有
//删除所有元素,此时数组为空

遍历数组

在我们对数组操作完之后,操作最多的就是对数组进行遍历
使用循环通过索引值来查看每一个数组的元素,实现如下:
NSMutableArray *newArray = [NSMutableArray arrayWithObjects:@"1",@"2",@"3",@"4",@"5", nil];
    for (int i = 0; i < newArray.count; i++) {
        NSLog(@"%@",[newArray objectAtIndex:i]);
    }
//使用快速枚举进行遍历
for (id element in newArray) {
    NSLog(@"element = %@",element);
}
//使用枚举器(NSEnumerator)遍历   
NSEnumerator *enumerator = [newArray objectEnumerator];
id obj;
while (obj = [enumerator nextObject]) {
    NSLog(@"obj = %@",obj);
}
//注意,使用快速枚举或枚举器进行遍历时,不要添加或者删除数组元素,否则程序运行时会报错
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值