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. vs打开项目出错:未找到导入的项目“C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\BuildCustomizations\CUDA 5.0.props”的解决办法

    有时候由于CUDA升级或者下载的源码原创建项目的CUDA版本与自己的不同,在打开项目的时候发现加载不上,提示:未找到导入的项目“C:\Program Files (x86)\MSBuild\Micro ...

  2. Dapper源码学习和源码修改(下篇)

    目录: Dapper源码学习和源码修改(上篇主要讲解入参解析) Dapper源码学习和源码修改(下篇主要讲解出参解析) 继上篇讲了下自己学习Dapper的心得之后,下篇也随之而来,上篇主要讲的入参解析 ...

  3. vuejs子组件向父组件传递数据

    子组件通过$emit方法向父组件发送数据,子组件在父组件的模板中,通过自定义事件接收到数据,并通过自定义函数操作数据 <!DOCTYPE html> <html lang=" ...

  4. java中的i++和++i区别

    public class Main { public static void main(String[] args) { int i = 0; i = i++; System.out.println( ...

  5. Confluence安装&破解&汉化

    p.MsoNormal,li.MsoNormal,div.MsoNormal { margin: 0cm; margin-bottom: .0001pt; text-align: justify; f ...

  6. 在hive中直接对timestamp类型取max报错

    之前直接对timestamp类型做max操作, select id,max(updatetime) updatetime from his.tag group by id; 结果查询的结果有的显示为1 ...

  7. 深度学习实践系列(3)- 使用Keras搭建notMNIST的神经网络

    前期回顾: 深度学习实践系列(1)- 从零搭建notMNIST逻辑回归模型 深度学习实践系列(2)- 搭建notMNIST的深度神经网络 在第二篇系列中,我们使用了TensorFlow搭建了第一个深度 ...

  8. "!function",自执行函数表达式

    如题为自执行函数表达式.在这种情况下,解析器在解析function关键字的时候,会将相应的代码解析成function表达式,而不是function声明.下面2个括弧()都会立即执行 (function ...

  9. 1145: 零起点学算法52——数组中删数II

    1145: 零起点学算法52--数组中删数II Time Limit: 1 Sec  Memory Limit: 64 MB   64bit IO Format: %lldSubmitted: 293 ...

  10. iOS 从url中获取文件名以及后缀

    //这里有一个模拟器沙盒路径(完整路径) NSString* index=@"/Users/junzoo/Library/Application Support/iPhone Simulat ...