Objective-C 7 NSArray常用方法

Objective-c中的使用数组的类是NSArray和NSMutableArray。一个是不可变数组,另一个是可变数组。

我们先看一下不可变数组NSArray。

NSArray

NSArray保存的对象可以是不同的对象。但

NSArray类有两个限制:

1 它只能存储Objective-C对象,不能存储基础数据类型(int、float、BOOL等)。

2 它不能存粗nil(对象的零值和NULL)。

初始化

<span style="white-space:pre">	</span>//ios 6 快捷初始化
        NSArray *ary = @[@"top",@"jungle",@"mid",@"adc",@"support"];
        NSLog(@"ary = %@",ary);
        //实例方法初始化
        NSArray *ary1 = [[NSArray alloc] initWithObjects:@"top",@"adc",@"apc",@"jungle", nil];
        NSLog(@"ary1 = %@",ary1);
        NSArray *ary2 = [[NSArray alloc] initWithArray:ary1];
        NSLog(@"ary2 = %@",ary2);
        //类方法初始化
        NSArray *ary3 = [NSArray arrayWithObject:@23];
        NSLog(@"ary3 = %@",ary3);
        NSArray *ary4 = [NSArray arrayWithObjects:@"top",@"adc",@"apc",@"jungle", nil];
        NSLog(@"ary4 = %@",ary4);
        NSArray *ary5 = [NSArray arrayWithArray:ary2];
        NSLog(@"ary5 = %@",ary5);

输出结果:

2016-01-09 14:28:09.001 命令行工程[13776:1114249] ary = (
    top,
    jungle,
    mid,
    adc,
    support
)
2016-01-09 14:28:09.002 命令行工程[13776:1114249] ary1 = (
    top,
    adc,
    apc,
    jungle
)
2016-01-09 14:28:09.002 命令行工程[13776:1114249] ary2 = (
    top,
    adc,
    apc,
    jungle
)
2016-01-09 14:28:09.002 命令行工程[13776:1114249] ary3 = (
    23
)
2016-01-09 14:28:09.002 命令行工程[13776:1114249] ary4 = (
    top,
    adc,
    apc,
    jungle
)
2016-01-09 14:28:09.002 命令行工程[13776:1114249] ary5 = (
    top,
    adc,
    apc,
    jungle
)

数组的一些属性

因为这几个都是它的属性,所以既可以用点语法,也可以用属性点get方法。

NSArray *ary = @[@"top",@"jungle",@"mid",@"adc",@"support"];
//ary.count == [ary count];
NSLog(@"数组长度 = %lu",ary.count);
//ary.firstObject == [ary firstObject];
NSLog(@"第一个对象 = %@",ary.firstObject);
//ary.lastObject == [ary lastObject];
NSLog(@"最后一个对象 = %@",ary.lastObject);
//ary.sortedArrayHint == [ary sortedArrayHint];
NSLog(@"NSData 的对象 = %@",ary.sortedArrayHint);
//ary.description == [ary description];
NSLog(@"description方法 = %@",ary.description);

输出:

2016-01-09 14:46:47.843 命令行工程[13938:1120615] 数组长度 = 5
2016-01-09 14:46:47.845 命令行工程[13938:1120615] 第一个对象 = top
2016-01-09 14:46:47.845 命令行工程[13938:1120615] 最后一个对象 = support
2016-01-09 14:46:47.845 命令行工程[13938:1120615] NSData 的对象 = <066c711f 4bb3d7a3 25b7311f 83b1c41e 24219268>
2016-01-09 14:46:47.845 命令行工程[13938:1120615] description方法 = (
    top,
    jungle,
    mid,
    adc,
    support
)

数组派生出新数组

NSArray *ary = @[@"top",@"jungle"];
//在最后添加一个OC对象,形成一个新的数组。
NSArray *ary1 = [ary arrayByAddingObject:@"lol"];
NSLog(@"ary1 = %@",ary1);
//在最后添加多个对象,形成一个新的数组。
NSArray *ary2 = [ary arrayByAddingObjectsFromArray:ary1];
NSLog(@"ary2 = %@",ary2);
NSLog(@"ary2的长度 = %lu",ary2.count);
//截取数组一部分创建新的数组
NSArray *ary3 = [ary2 subarrayWithRange:NSMakeRange(1, 3)];
NSLog(@"ary3 = %@",ary3);
//ary并没有改变,只是通过它派生出新的数组。
NSLog(@"ary = %@",ary);
输出:

2016-01-09 15:00:19.145 命令行工程[14046:1124762] ary1 = (
    top,
    jungle,
    lol
)
2016-01-09 15:00:19.146 命令行工程[14046:1124762] ary2 = (
    top,
    jungle,
    top,
    jungle,
    lol
)
2016-01-09 15:00:19.146 命令行工程[14046:1124762] ary2的长度 = 5
2016-01-09 15:00:19.146 命令行工程[14046:1124762] ary3 = (
    jungle,
    top,
    jungle
)
2016-01-09 15:00:19.146 命令行工程[14046:1124762] ary = (
    top,
    jungle
)

其他方法

NSArray *ary = @[@"top",@"jungle",@"mid",@"adc",@"support"];
//访问某个指定位置的对象
NSString *str = ary[2]; //也可以使用 [ary objectAtIndex:2]
NSLog(@"str = %@",str);
//对象在数组中的位置
unsigned long ind = [ary indexOfObject:@"adc"];
NSLog(@"adc在数组中的下标 = %lu",ind);
//如果没存在这个对象 会输出。。。
NSLog(@"adddd在数组中的下标 = %lu",[ary indexOfObject:@"ad"]);
//是否包含某个对象 0 false  1 true
BOOL co = [ary containsObject:@"support"];
NSLog(@"ary是否包含字符串support %i",co);
//数组连接参数形成字符串
NSString *str1 = [ary componentsJoinedByString:@""];
NSLog(@"str1 = %@",str1);
NSString *str2 = [ary componentsJoinedByString:@"!"];
NSLog(@"str2 = %@",str2);
输出:

2016-01-09 15:23:20.569 命令行工程[14265:1134215] str = mid
2016-01-09 15:23:20.570 命令行工程[14265:1134215] adc在数组中的下标 = 3
2016-01-09 15:23:20.570 命令行工程[14265:1134215] adddd在数组中的下标 = 9223372036854775807
2016-01-09 15:23:20.570 命令行工程[14265:1134215] ary是否包含字符串support 1
2016-01-09 15:23:20.571 命令行工程[14265:1134215] str1 = topjunglemidadcsupport
2016-01-09 15:23:20.571 命令行工程[14265:1134215] str2 = top!jungle!mid!adc!support


未完待续。。。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值