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的更多相关文章

  1. 黑马程序员——OC语言Foundation框架 (2) NSArray NSSet NSDictionary\NSMutableDictionary

    Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)NSArray 1>NSArray :不可变数组 ①创建方法 ...

  2. OC中Foundation框架之NSString、NSMutableString

    创建方式 )直接赋值 NSString *str =@"abc"; )创建对象 NSString *str2 = [[NSString alloc]init]; str2 =@&q ...

  3. OC中Foundation框架之NSDictionary、NSMutableDictionary

    NSDictionary概述 NSDictionary的作用类似:通过一个key ,就能找到对应的value 同样 NSDictionary是不可变的,一旦初始化完毕,里面的内容就无法修改 NSDic ...

  4. OC中Foundation框架

    框架的概念 框架是由许多类.方法.函数.文档按照一定的逻辑组织起来的组合,以便使研发程序变的更容易在OS X下地Mac操作系统中大约有80个框架为所有程序开发奠定基础的框架称为Foundation框架 ...

  5. Foundation框架—— 数组 (NSArray NSMutableArray )

    基础知识回顾 1.在给可变数组添加元素时,要保证该数组已被初始化 2.在遍历可变数组时,不能对其进行增删改 3.NSMutableArray继承自NSArray,几乎拥有NSArray的一切方法. 4 ...

  6. Foundation框架之NSArray、NSDictionary、NSSet及其Mutable类型

    Foundation框架之NSArray.NSDictionary.NSSet及其Mutable类型 目录 概述——对Foundation框架集合类的理解 NSArray NSDictionary N ...

  7. OC - 7.Foundation框架的简单介绍

    OC语言-07-OC语言-Foundation框架   结构体 NSRange/CGRange 用来表示一个元素在另一个元素中的范围,NSRange等价于CGRange 包含两个属性: NSUInte ...

  8. OC中的NSNumber、NSArray、NSString的常用方法

    和C语言不同,在Objective-C语言中,有单独的字符串类NSString.C语言中,string是由 char(ASCLL码)字符组成 OC中,字符串是由unichar(Unicode)字符组成 ...

  9. [OC Foundation框架 - 7] NSArray的创建与遍历

    NSArray是不可变的,不能先创建再添加元素 NSArray可以放入任何OC对象,但不能放入基本数据类型.结构体.枚举等非OC对象 不能存储nil   A.常用方法1 创建 返回用量 是否含有某元素 ...

随机推荐

  1. zookeeper + dubbo + spring boot

    最近开始接触了分布式的一些东西,这里给自己作一个学习笔记. 这里只是做一个运行demo,具体的理论知识就不在这里阐述了. 1.zookeeper的安装与启动 下载地址:http://www.apach ...

  2. 实用 .htaccess 用法大全

    这里收集的是各种实用的 .htaccess 代码片段,你能想到的用法几乎全在这里. 免责声明: 虽然将这些代码片段直接拷贝到你的 .htaccess 文件里,绝大多数情况下都是好用的,但也有极个别情况 ...

  3. Linux下python开发环境的准备

    升级python 安装依赖: yum install lrzsz zlib zlib-devel  openssl  readline-deve gcc  ibffi-devel python-dev ...

  4. ConversionService接口

    spring已经为我们提供了一个既可以使用GenericConversionService,又可以注入Converter的类,那就是ConversionServiceFactoryBean.该类为我们 ...

  5. python 、mmap 实现内存数据共享

    import mmap mmap_file = None ##从内存中读取信息, def read_mmap_info(): global mmap_file mmap_file.seek(0) ## ...

  6. python+robot framework接口自动化测试

    python+requests实现接口的请求前篇已经介绍,还有不懂或者疑问的可以访问 python+request接口自动化框架 目前我们需要考虑的是如何实现关键字驱动实现接口自动化输出,通过关键字的 ...

  7. java开发中的链式思维 —— 设计一个链式过滤器

    概述 最近在弄阿里云的sls日志服务,该服务提供了一个搜索接口,可根据各种运算.逻辑等表达式搜出想要的内容.具体语法可见https://help.aliyun.com/document_detail/ ...

  8. 如何使用LightningChart拖放功能进行数据转移 ?

    本文主要介绍如何使用LightningChart扩展拖放功能为所有图表组件创建图表,如:系列,标题,轴线等等.支持用鼠标放置自定义对象到另一个图表中,如:可以添加或修改JSON/CSV或其他格式的数据 ...

  9. es 6点滴记录

    关于babel和webpack的使用: Babel 所做的只是帮你把'ES6 模块化语法'转化为'CommonJS 模块化语法',其中的require exports 等是 CommonJS 在具体实 ...

  10. 4.熟悉Java基本类库系列——Java 正则表达式类库

    正则表达式语法结构图: Java正则表达式类库结构图: Java典型例子 1.String类 matches()方法 判断字符串是否符合特定正则表达式 @Test public void testRe ...