iOS阶段学习第15天笔记(NSArray与NSMutableArray 数组)
iOS学习(OC语言)知识点整理
一、OC中的数组
1)数组:也是一个对象,数组中存放的是对象的地址,可以存放任意类型对象的地址,只能是对象不能是具体的数值,数组是有序的,
可以存放重复的元素,数组也分为不可变数组和可变数组.
1、不可变数组NSArray:初始化之后不能修改数组的内容
2、可变数组NSMutableArray:可以随时修改数组的内容(增加元素、删除元素、修改元素)
二、NSArray数组的操作
1)NSArray数组的创建
1、创建方法一:使用实例方法创建数组对象 例如:
NSArray *array1=[[NSArray alloc]initWithObjects:@"one",
[NSNumber numberWithInt:],@"three",@"one",@"four", nil];
//用一个数组对象创建另一个数组对象
NSArray *array2=[[NSArray alloc]initWithArray:array1];
2、创建方法二:用类方法创建数组对象 例如:
NSArray *array3=[NSArray arrayWithObjects:@"one",@"two",@"three",@"four", nil];
3、创建方法三:直接快速创建数组 例如:
NSArray *array4=@[@"one",@"two",@"three",@"four"];
2)数组中可使用.count 获取数组中元素的个数, 例如: NSUInteger number= array1.count;
3)objectAtIndex 用于根据数组下标获取数组中的元素 例如:
1 NSString *str1=[array1 objectAtIndex:]; //获取数组中的第一个元素
2 NSString *str2=array1[];//使用类似C语言的方式取出下标对应的元素
4)firstObject 用于获取数组中的第一个元素 例如:
NSString *first=[array1 firstObject];
5)lastObject 用于获取数组中最后一个元素 例如:
NSString *last=[array1 lastObject];
6)indexOfObject 用于根据元素获取该元素在数组中的下标 例如:
NSUInteger index=[array1 indexOfObject:@"three"];// 结果为:2
7)containsObject 用于判断数组中是否存在某个元素 例如:
if([array1 containsObject:@"four"]){
NSLog(@"contains");
}
8)subarrayWithRange 获取数组某个范围的数据,可用于对数组数据分页操作
NSArray *numArray=@[@,@,@,@,@];
NSRange range=NSMakeRange(, );//第一个参数为取值起始位置;第二个参数为取值个数
NSArray *array=[numArray subarrayWithRange:range];
NSLog(@"%@",array);//结果:(2,3)
9)NSArray 数组遍历方法
1、循环遍历法:通过下标取每个元素 例如:
for(int i=;i<array1.count;i++){
NSString *s=[array1 objectAtIndex:i];
NSLog(@"%@",s);
}
2、迭代器法:创建一个迭代器对象,遍历array1的元素 例如:
NSEnumerator *enumerator=[array1 objectEnumerator];
id obj;
//[enumerator nextObject]:迭代器自动指向下一个元素,如果没有元素,为nil
while (obj=[enumerator nextObject]) {
NSLog(@"%@",obj);
}
3、快速遍历法: 遍历时不能修改元素的内容 例如:
//循环中会自动将数组中的每个元素赋给s
for(id s in array1){
if([s isKindOfClass:[NSNumber class]])//取出数组中的数值类型的数据
NSLog(@"number ******%@",s);
else if ([s isKindOfClass:[NSString class]]) //取出数组中字符串类型的数据
NSLog(@"nsstring******%@",s);
}
10) 直接输出打印一个数组是会自动调用数组中的元素的description方法,把所有的元素都显示出来 例如:
NSLog(@"%@",array1);//注:中文内容会变乱码,需要循环遍历输出才行。
11)componentsJoinedByString 用于将数组中的各个元素用指定字符拼接成一个字符串 例如:
NSString *s=[array1 componentsJoinedByString:@","];//以逗号拼接各个元素
12)componentsSeparatedByString 用于将一个字符串以指定字符分割成一个数组 例如:
NSString *str=@"hello,nihao,shang,hai";
NSArray *array6=[str componentsSeparatedByString:@","];//以符号分割字符串
13)componentsSeparatedByCharactersInSet 用字符串中所有的字符创建一个字符集对象,根据字符集对象截取字符串 例如:
NSString *str7=@"hello,@nihao!shang,hai";
NSArray *array7=[str7 componentsSeparatedByCharactersInSet:
[NSCharacterSet characterSetWithCharactersInString:@",@!"]];
NSLog(@"array7:%@",array7); // 注:根据字符集对象中的任意一个字符,将字符串拆分成各个子字符串,会出现@""的情况,需要自己手动处理, 例如:
if (![str isEqualToString:@""]) {
//执行代码
}
三、NSMutableArray 数组的操作
1)可变数组:父类是NSArray,NSMutableArray可以操作数组中的元素(增加、删除、修改)
2)initWithObjects 用于创建可变数组对象 例如:
NSMutableArray *array1=[[NSMutableArray alloc]initWithObjects:@"one",@"two", nil];
3)addObject 在数组最后添加一个对象 例如:
[array1 addObject:[NSNumber numberWithInt:]];
4)insertObject … atIndex… 在数组的指定索引位置插入一个对象 例如:
[array1 insertObject:@"shanghai" atIndex:];
5)removeObject 删除指定元素,如果有多个,全都被删除 ,例如:
[array1 removeObject:@"one"];
6)removeLastObject 用于删除最后一个元素 例如:
[array1 removeLastObject];
7)removeObjectAtIndex 用于删除数组中指定位置的元素 例如:
[array1 removeObjectAtIndex:];
8)removeObject… inRange… 将指定范围内的元素删除(如果不指定,会将所有相同的都删除) 例如:
[array1 removeObject:@"two" inRange:NSMakeRange(, )];
9)removeAllObjects 删除数组中所有的元素 例如:
[array1 removeAllObjects];
10)replaceObjectAtIndex… withObject… 将指定位置的元素用新的元素替换 例如:
[array1 replaceObjectAtIndex: withObject:@"hello"];
11)exchangeObjectAtIndex… withObjectAtIndex… 用于交换指定下标处的元素 例如:
[array1 exchangeObjectAtIndex: withObjectAtIndex:];
12)setArray 重置数组中的内容 例如:
1 NSArray *subArray=@[@"ios",@"two",@"oc"];
2 [array1 setArray:subArray];
13)NSMutableArray 对类对象的排序操作。
实例代码:
//数组根据指定元素排序的操作
NSMutableArray *array=[[NSMutableArray alloc]init];
Student *stu=[[Student alloc]init];
stu.name=@"KingKong";
stu.age=;
stu.no=@"A1088";
stu.score=;
[array addObject:stu];
//根据成绩正序排(ascending:NO 倒序排)
NSSortDescriptor *sortDes = [NSSortDescriptor sortDescriptorWithKey:@"score" ascending:YES];
[array sortUsingDescriptors:[NSMutableArray arrayWithObject:sortDes]];
iOS阶段学习第15天笔记(NSArray与NSMutableArray 数组)的更多相关文章
- iOS阶段学习第15天笔记(NSDictionary与NSMutableDictionary 字典)
iOS学习(OC语言)知识点整理 一.OC中的字典 1)字典:是一个容器对象,元素是以键-值对(key-value)形式存放的,key和value是任意类型的对象,key是唯一的,value可以重复 ...
- iOS阶段学习第15天笔记(NSDate操作)
iOS学习(OC语言)知识点整理 一.OC关于NSDate类的操作实例代码 //默认直接显示对象,显示的是格林威治时间 //获取当前日期时间的实例方法 NSDate *date1=[[NSDate a ...
- iOS阶段学习第17天笔记(NSFileManager-NSFileHandle-文件操作)
iOS学习(OC语言)知识点整理 一.单例模式 1)单例是一种编程思想,一个设计模式,与语言无关在采用了单例对象的应用程序中,需要单例类自行提供实例化单例对象, 不管实例化单例对象多少次,只有一个对象 ...
- iOS 阶段学习第11天笔记(OC基础知识)
iOS学习(OC语言)知识点整理 一.OC基础知识 1)#import 用于导入头文件,预处理阶段加载引用,只加载一次. 2)OC 依赖于Foundation框架下的头文件Foundation.h, ...
- iOS 阶段学习第七天笔记(函数、递归)
iOS学习(C语言)知识点整理笔记 一.函数 1)概念:具有特定功能的代码块的封装 2)函数的定义: 函数类型+函数名(形参列表) 函数类型 函数名(形参类型1 形参名1,形参类型2 形参名2 ...
- iOS阶段学习第三天笔记(运算符)
iOS学习(C语言)知识点整理笔记 1.运算符 一.算术运算符 1)表达式由变量.常量.运算符构成,有确定的类型和值 2)算术运算符包括: +(加),-(减),*(乘),/(除),%(模) 3)算术运 ...
- iOS 阶段学习第三天笔记(运算符)
iOS学习(C语言)知识点整理笔记 1.运算符 一.算术运算符 1)表达式由变量.常量.运算符构成,有确定的类型和值 2)算术运算符包括: +(加),-(减),*(乘),/(除),%(模) 3)算术运 ...
- iOS阶段学习第33天笔记(自定义标签栏(UITabBar)介绍)
iOS学习(UI)知识点整理 一.自定义标签栏 1.方法一 单个创建标签栏 #import "AppDelegate.h" #import "SecondViewCont ...
- iOS阶段学习第32天笔记(页面传值方法介绍)
iOS学习(UI)知识点整理 一.界面传值方法 1.方法一 Block传值 通过SubView视图的Block向View视图传值改变View视图的背景色 实例代码: 1)SubViewContro ...
随机推荐
- 自动更新Chromium
Chromium 其实就是开发版本的Chrome, 即Chrome dev 版本.一般他的版本要比正式版的Chrome高两个及以上.比如正式版本现在是29,开发者版本已经是32了. 这表示很多新功能你 ...
- 在js中对时间类型格式化字符串
Date.prototype.toString = function (format) { if (format == null) { format = "yyyy-MM-dd HH:mm: ...
- 我所理解的OOP——UML六种关系
最近由于经常给公司的小伙伴儿们讲一些OOP的基本东西,每次草纸都被我弄的很尴尬,画来画去自己都乱了,有时候也会尝试使用UML表示类之间的关系,但UML从毕业后就再也没接触过了,经常会被小伙伴儿们指出继 ...
- Mac配置Qt环境——Could not resolve SDK path for 'macosx10.8'
前言:解决在Mac端安装Qt后,出现的Could not resolve SDK path for 'macosx10.8'的配置信息. 首先,发现问题之前,先搜索一下.但是搜索的结果都是说,找到配置 ...
- easy-ui 小白进阶史(一):加载数据,easy-ui显示
作为一个没上过大学,没经过正规培训的96年的小白来说,找工作就没报特别大的希望,大不了找不到在回炉重造,继续学... 终于在海投了200份的简历之后...终于找到了...面试也挺简单的,,,第二天就去 ...
- java arraylist的问题
不得不说,我犯了错,很基础的.. 遍历list的时候可以删除数组元素吗? 答案是:简单/增强for循环不可以,list.iterator()这样的方式就可以. 我之前做过类似面试题的,不过忘记了, 不 ...
- vs2013中的“任务列表”菜单
以前在java项目中经常用到todo. 现在vs2013也完美支持了. 首先,对于目前不确定而尚需完善的代码,在前面加 //TODO:by who --注释文字,比如: //TODO:lhl--类目I ...
- iOS给图片添加滤镜&使用openGLES动态渲染图片
给图片增加滤镜有这两种方式: CoreImage / openGLES 下面先说明如何使用CoreImage给图片添加滤镜, 主要为以下步骤: #1.导入CIImage格式的原始图片 #2.创建CIF ...
- 更新日志 - fir.im Jenkins & Gradle 插件上线
最近 fir.im 工程师们效率爆表,fir.im 实用工具集合又添加了新的成员-- Jenkins & Gradle 插件,让 App 打包上传更加简单快速. fir.im Jenkins ...
- 加载的过程中图片变形了? --教你自定义自动适配图片宽高比的RatioLayout
很多同行在开发中可能会遇到这样的问题,就是在加载图片的时候会出现图片变形的问题.其实这很可能就是你的图片宽高比和图片所在容器的宽高比不匹配造成的.比如说图片的宽为200,高为100.宽高比就是2,那么 ...