OC中Foundation框架之NSArray、NSMutableArray
NSArray概述
NSArray是OC中的数组类
NSArray特点
)只能存放任意OC对象,并且是有顺序的
)不能存放非OC对象,比如int/float/double/char/enum/struct等
)它是不可变的,一但初始化完毕后,它里面的内容就永远是固定的,不能删除里面的元素,也不能再玩里面添加元素
NSArray的创建方式
+(instancetype)array;
+(instancetype)arrayWithObject:(id)anObject;
+(instancetype)arrayWithObjects:(id)firstObj,...;
+(instancetype)arrayWithArray:(NSArray *)array;
+(id)arrayWithContentsOfFile:(NSString *)path;//读取一个xml文件
+(id)arrayWithContentsOfURL:(NSURL*) url;//读取一个xml文件
NSArray使用注意
)NSArray直接使用NSLog()作为字符串输出时是小括号括起来的形式
)NSArray中不能存储nil,因为NSArray认为nil是数组的结束(nil时数组元素结束的标记). nil就是 ,0也是基本数据类型,不能存放到NSArray中
)由于NSArray创建以后就是不可变的,所以 NSArray * array =[NSArray array];//这样的数组永远是空的,不可能向其中增加值.(不可变性)
NSArray的常见用法
获取集合元素个数
-(NSUInteger)count;
获取index位置的元素
-(id) objectAtIndex:(NSUInteger) index;
判断是否包含某个元素
-(BOOL)containsObject:(id)anObject;
返回最后一个元素
-(id)lastObject;
返回第一个元素
-(id)firstObject;
查找anObject元素在数组中的位置(如果找不到,返回-) NSNotFound
-(NSUInteger)indexOfObject:(id)anObject;
在range范围内查找anObject元素在数组中的位置
-(NSUInteger)indexOfObject:(id) anObject inRange:(NSRange) range;
NSArray的简写形式
数组的创建
[NSArray arrayWithObjects:@"Jack",@"Rose",@"Jim",nil]
简写后:
@[@"Jack",@"Rose",@"Jim"]; 数组元素的访问
[array objectAtIndex:];
现在
array[];
NSArray的遍历
,普通for循环
for(int i=;i<arr.conten;i++){
NSLog(@"%@",arr[i];
}
.增强for循环
for(NSString *str:arr){
NSLog(@"%@",str);
}
.block遍历
id obj 数组的元素的值
NSUInteger idx 索引index,获取数组元素的下标
BOOL *stop YES 表示要停止
[arr enumerateObjectsUsingBlock:^(id obj,NSUInteger idx,BOOL *stop){
NSLog(@"索引:%ld---->元素值:%@ ",idx,obj);
}]
NSArray读写文件
.NSArray数据写入到文件中
//创建一个数组
NSArray *arr =[NSArray arrayWithObjects:@"",@"",@"",@"",@"",nil];
//写入数据到文件中
if([arr writeToFile:@"/Users/liwei/Desktop/arr.plit" atomically:YES]){ NSLog(@"写入成功!"); } .从文件中读取数据,并且放到数组中
NSArray *arr2 =[NSArray arrayWithContentsOfFile:@"/Users/apple/Desktop/arr.plist"];
NSLog(@"arrange=%@",arr2);
NSArray与字符串
用separator作拼接符将数组元素拼接成一个字符串
-(NSString *)componentsJoinedByString:(NSString *)separator;
字符串分隔
NSString *str=@"400-588-1688";
NSArray *arr =[str componentsSeparatedByString:@"-"];
NSLog(@"%@",arr);
NSMutableArray
概述:
NSmutableArray是NSArray得子类,
NSArray是不可变的,而NSMutableArray是可变的,随时可以往里面添加、更改、删除元素
//创建一个空的NSMutableArray
NSMutableArray *array = [NSMutableArray array];
NSMutableArray的基本使用
//创建空数组
NSMutableArray *arr = [NSMutableArray array];
//创建一个指定长度为5的空数组
NSMutableArray *arrange = [[NSMutableArray alloc]initWithCapacity:];
//创建一个数组,包含两个元素
NSMutableArray *arr3 =[NSMutableArray arrayWithObjects:@"",@"",nil];
//调用对象方法创建数组
NSMutableArray *array=[[NSMutableArray alloc] initWithObjects:@"",@"",nil];
NSMutable的方法
添加一个元素
-(void) addObject:(id)object;
添加otherArray的全部元素到当前数组
-(void) addjectsFromArdObray:(NSArray *)array;
在index位置插入一个元素
-(void)insertObject:(id) anObject atIndex:(NSUInteger) index;
删除最后一个元素
-(void)removeLastObject;
删除所有的元素
-(void)removeAllObjects;
删除Index位置的元素
-(void)removeObjectAtIndex:(NSUInteger)index;
删除特定的元素
-(void)removeObject:(id)object;
删除range范围内的所有元素
-(void)removeObjectsInRange:(NSRange)range;
用anObject替换index位置对应的元素
-(void)replaceObjectAtIndex:(NSUInteger)index withObject:(id)anObject;
交换idx1 和 idx2位置的元素
-(void)exchangeObjectAtIndex:(NSUInteger)idxl withObjectAtIndex:(NSUInteger)idxisdx;
NSMutableArray 错误用法
NSMutableArray *array = @[@"bob",@"steve",@"john"];
[array addObject:@"Peter"];//错误,使用@[@"bob",@"steve",@"john"]这种方式创建的永远是NSArray(不可变数组); 正确的做法
NSMutableArray *array =[NSMutableArray arrayWithArray:@[@"bob",@"steve",@"john"]];
[array addObject:@"Peter"];
OC中Foundation框架之NSArray、NSMutableArray的更多相关文章
- 黑马程序员——OC语言Foundation框架 (2) NSArray NSSet NSDictionary\NSMutableDictionary
Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)NSArray 1>NSArray :不可变数组 ①创建方法 ...
- OC中Foundation框架之NSString、NSMutableString
创建方式 )直接赋值 NSString *str =@"abc"; )创建对象 NSString *str2 = [[NSString alloc]init]; str2 =@&q ...
- OC中Foundation框架之NSDictionary、NSMutableDictionary
NSDictionary概述 NSDictionary的作用类似:通过一个key ,就能找到对应的value 同样 NSDictionary是不可变的,一旦初始化完毕,里面的内容就无法修改 NSDic ...
- OC中Foundation框架
框架的概念 框架是由许多类.方法.函数.文档按照一定的逻辑组织起来的组合,以便使研发程序变的更容易在OS X下地Mac操作系统中大约有80个框架为所有程序开发奠定基础的框架称为Foundation框架 ...
- Foundation框架—— 数组 (NSArray NSMutableArray )
基础知识回顾 1.在给可变数组添加元素时,要保证该数组已被初始化 2.在遍历可变数组时,不能对其进行增删改 3.NSMutableArray继承自NSArray,几乎拥有NSArray的一切方法. 4 ...
- Foundation框架之NSArray、NSDictionary、NSSet及其Mutable类型
Foundation框架之NSArray.NSDictionary.NSSet及其Mutable类型 目录 概述——对Foundation框架集合类的理解 NSArray NSDictionary N ...
- OC - 7.Foundation框架的简单介绍
OC语言-07-OC语言-Foundation框架 结构体 NSRange/CGRange 用来表示一个元素在另一个元素中的范围,NSRange等价于CGRange 包含两个属性: NSUInte ...
- OC中的NSNumber、NSArray、NSString的常用方法
和C语言不同,在Objective-C语言中,有单独的字符串类NSString.C语言中,string是由 char(ASCLL码)字符组成 OC中,字符串是由unichar(Unicode)字符组成 ...
- [OC Foundation框架 - 7] NSArray的创建与遍历
NSArray是不可变的,不能先创建再添加元素 NSArray可以放入任何OC对象,但不能放入基本数据类型.结构体.枚举等非OC对象 不能存储nil A.常用方法1 创建 返回用量 是否含有某元素 ...
随机推荐
- iOS开发之Copy & MutableCopy及深复制 & 浅复制
1.使用copy或mutableCopy方法可以创建一个对象的副本. copy: (1)需要实现NSCoppying协议 (2)创建的是不可变副本(如NSString.NSArray.NSDictio ...
- Dive in python Chapter4 实例
def info(object,spacing=10,collapse=1): """Print methods and doc strings. Takes modul ...
- centos登录时一闪而过,显示module is unknown
原因是修改了在/etc/pam.d/login中加入了: session required /lib/security/pam_limits.so session required pam_limit ...
- 浅谈Java的开放封闭原则
写在前面 最近, 接手了一个新业务,系统的架构可圈可点.但有些地方让人望而生畏,有些代码臃肿难以维护,让人不敢恭维.于是,结合了Java的开放封闭原则,对其中一部分代码进行了重构优化. 先来看下以前系 ...
- linux命令之查看字符集
lucifer@abc:~$ locale -a 查看本地字符集lucifer@abc:~$ locale -m 查看所有支持的字符集将文件从gb2312转为utf8iconv -f gb2312 - ...
- 解决vagrant up启动失败,停留在Booting VM...过程的方法
如图,这种情况是因为没有正确关闭虚拟机导致的,关闭时应在命令行使用vagrant halt 命令,如果直接关机便会出现这种情况. 解决办法:直接启动VirtualBox,并在命令行vagrant ha ...
- svn检出服务器项目中出现的could not connect to server
今天来新同事,新配的电脑装上SVN,Myeclipse后,检出服务器的项目老是出现文件不存在,could not connect to server.最后上网搜了下, 1.先用电脑ping服务器,看网 ...
- vertical-align 与 line-height 傻傻分不清??
要说吧,咱家是个菜鸟,以前遇见垂直居中的东东,也是现查现用,其中最长遇到的东西就是 vertical-align 和 line-height,似乎这俩个兄弟都可以实现居中对齐,不过窃以为二者还是有区别 ...
- Activity栈与任务管理探究1——栈与任务的概述
Activity栈与任务管理探究1--栈与任务的概述 内容概览 1. 前言 2. Activity中的Stack 3. Activity中的Task 4. Activity栈与任务管理基本原则 1. ...
- AES算法,DES算法,RSA算法JAVA实现
1 AES算法 1.1 算法描述 1.1.1 设计思想 Rijndael密码的设计力求满足以下3条标准: ① 抵抗所有已知的攻击. ② 在多个平台上速度快,编码紧凑. ③ 设计 ...