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 创建 返回用量 是否含有某元素 ...
随机推荐
- Ubuntu 16.04系统下安装RapidSVN版本控制器及配置diff,editor,merge和exploer工具
在Window下我们使用TortoiseSVN(小乌龟),可以很方便地进行查看.比较.更新.提交.回滚等SVN版本控制操作. 在Linux下我们可以使用RapidSVN.RapidSVN是一款轻量级的 ...
- 走入PHP-初次见面
FROM:实验楼 Linux启动WEB服务器: $ sudo service apache2 start 新建并打开test.php文件: $ sudo gvim /path/test.php PHP ...
- angular2 日期格式化
angular2 日期格式话 ng2 在模板中格式话显示日期使用 DatePipe 管道(其实就是ng1里面的过滤器(filter),换了个说法), 如下示例: 1 <div class=&qu ...
- .NET Core开源组件:后台任务利器之Hangfire
一.简述 Hangfire作为一款高人气且容易上手的分布式后台执行服务,支持多种数据库.在.net core的环境中,由Core自带的DI管理着生命周期,免去了在NF4.X环境中配置always ru ...
- Access中的自定义排序设置方式
一.问题起因 最近有网友提问说,Access中在用查询指定排序方式时,为什么只有升序跟降序,怎么米有自定义排序了?竟然比Excel都弱啊! 其实这是对Access的误解,我这就给大家来解一下疑惑.案例 ...
- Eclipse插件ObjectAid(UML画图工具)
原链接:https://my.oschina.net/keyven/blog/856594 最近想找一个Eclipse上的插件,可以方便的把java代码转换为UML图,但是由于我用的是Eclipse ...
- EM最大期望算法-走读
打算抽时间走读一些算法,尽量通俗的记录下面,希望帮助需要的同学. overview: 基本思想: 通过初始化参数P1,P2,推断出隐变量Z的概率分布(E步): 通过隐变量Z的概 ...
- 一些CSS/JS小技巧
CSS部分 1.文本框不可点击 .inputDisabled{ background-color: #eee;cursor: not-allowed;} 2.禁止复制粘贴 onpaste=" ...
- 易汇金在线支付接口实例。ecshop和shopex,shopnc,iwebshop下完美无错(最新)
最近为客户的一个在线商城做了一个易汇金在线支付的接口.跟大家分享一下. 1 首先可以模仿其他的接口,比如支付宝,财付通等的接口,构建模块功能文件和语言文件. 功能模块构建: /includes/mod ...
- NOIP2015游记——一次开心又失望的旅行
啊,一年一度的NOIP终于是结束了 以前的大神都有写自己的感受 然而我居然给忘了!!!! 吓得我赶紧来写一份游记 Day.-INF--出发前一个星期 机智的我选择了停课 就是为了OIER这伟大而又光荣 ...