
Objective-C 7 NSArray常用方法
发布日期:2021-05-10 11:31:40
浏览次数:22
分类:精选文章
本文共 4091 字,大约阅读时间需要 13 分钟。
Objective-c中的使用数组的类是NSArray和NSMutableArray。一个是不可变数组,另一个是可变数组。
我们先看一下不可变数组NSArray。
NSArray
NSArray保存的对象可以是不同的对象。但
NSArray类有两个限制:
1 它只能存储Objective-C对象,不能存储基础数据类型(int、float、BOOL等)。
2 它不能存粗nil(对象的零值和NULL)。
初始化
//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] 数组长度 = 52016-01-09 14:46:47.845 命令行工程[13938:1120615] 第一个对象 = top2016-01-09 14:46:47.845 命令行工程[13938:1120615] 最后一个对象 = support2016-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的长度 = 52016-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 trueBOOL 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 = mid2016-01-09 15:23:20.570 命令行工程[14265:1134215] adc在数组中的下标 = 32016-01-09 15:23:20.570 命令行工程[14265:1134215] adddd在数组中的下标 = 92233720368547758072016-01-09 15:23:20.570 命令行工程[14265:1134215] ary是否包含字符串support 12016-01-09 15:23:20.571 命令行工程[14265:1134215] str1 = topjunglemidadcsupport2016-01-09 15:23:20.571 命令行工程[14265:1134215] str2 = top!jungle!mid!adc!support未完待续。。。
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2025年04月05日 08时39分30秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
综合架构 -- 管理服务器
2021-05-10
小程序之wx:request(转)
2021-05-10
国内首款!搭载春藤8910DM的Cat 1模组完成中国电信测试入库
2021-05-10
DVWA--File Inclusion(文件包含)(全难度)
2021-05-10
js实现可视化音频
2021-05-10
实现营销号生成器
2021-05-10
centos7安装mysql,以及密码设置.
2021-05-10
gunicorn配置文件的启动方式
2021-05-10
STM32 GPIO 配置之ODR, BSRR, BRR 详解
2021-05-10
C#实现简单音乐播放器
2021-05-10
Ubuntu windows双系统没有引导界面的解决办法
2021-05-10
如何复制百度文库内容?
2021-05-10
Opencv视觉学习--读取、写入、显示图像
2021-05-10
Opencv视觉学习--调用摄像头、显示视频图像
2021-05-10
编写一个程序,检测当前系统的进程最多能打开几个文件。
2021-05-10
(顺序栈 / 链式栈)编程实现功能:将十进制数,分别转换为八进制和十六进制。
2021-05-10
C语言生成N个随机数组并存入txt文本文件
2021-05-10
虚拟机Ubuntu系统重启出现initramfs的解决办法
2021-05-10
Linux安装 Redis 以及配置
2021-05-10
一维多项式计算
2021-05-10