OC中Foundation框架之NSArray、NSMutableArray

NSArray概述

1 NSArray是OC中的数组类

NSArray特点

1 1)只能存放任意OC对象,并且是有顺序的
2 2)不能存放非OC对象,比如int/float/double/char/enum/struct等
3 3)它是不可变的,一但初始化完毕后,它里面的内容就永远是固定的,不能删除里面的元素,也不能再玩里面添加元素

NSArray的创建方式

1 +(instancetype)array;
2 +(instancetype)arrayWithObject:(id)anObject;
3 +(instancetype)arrayWithObjects:(id)firstObj,...;
4 +(instancetype)arrayWithArray:(NSArray *)array;
5 +(id)arrayWithContentsOfFile:(NSString *)path;//读取一个xml文件
6 +(id)arrayWithContentsOfURL:(NSURL*) url;//读取一个xml文件

NSArray使用注意

1 1)NSArray直接使用NSLog()作为字符串输出时是小括号括起来的形式
2 2)NSArray中不能存储nil,因为NSArray认为nil是数组的结束(nil时数组元素结束的标记). nil就是 0 ,0也是基本数据类型,不能存放到NSArray中
3 3)由于NSArray创建以后就是不可变的,所以  NSArray * array =[NSArray array];//这样的数组永远是空的,不可能向其中增加值.(不可变性)

NSArray的常见用法

 1 获取集合元素个数
 2 -(NSUInteger)count;
 3 获取index位置的元素
 4 -(id) objectAtIndex:(NSUInteger) index;
 5 判断是否包含某个元素
 6 -(BOOL)containsObject:(id)anObject;
 7 返回最后一个元素
 8 -(id)lastObject;
 9 返回第一个元素
10 -(id)firstObject;
11 查找anObject元素在数组中的位置(如果找不到,返回-1) NSNotFound
12 -(NSUInteger)indexOfObject:(id)anObject;
13 在range范围内查找anObject元素在数组中的位置
14 -(NSUInteger)indexOfObject:(id) anObject inRange:(NSRange) range;

NSArray的简写形式

 1 数组的创建
 2     [NSArray arrayWithObjects:@"Jack",@"Rose",@"Jim",nil]
 3 简写后:
 4         @[@"Jack",@"Rose",@"Jim"];
 5 
 6 
 7 数组元素的访问
 8         [array objectAtIndex:0];
 9 现在
10         array[0];

NSArray的遍历

1,普通for循环
    for(int i=0;i<arr.conten;i++){
        NSLog(@"%@",arr[i];
    }
2.增强for循环
    for(NSString *str:arr){
         NSLog(@"%@",str);
    }
3.block遍历
    id obj  数组的元素的值
    NSUInteger idx 索引index,获取数组元素的下标
    BOOL *stop YES 表示要停止 
    [arr enumerateObjectsUsingBlock:^(id obj,NSUInteger idx,BOOL *stop){
      NSLog(@"索引:%ld---->元素值:%@ ",idx,obj);
}]

NSArray读写文件

1 1.NSArray数据写入到文件中
2     //创建一个数组
3     NSArray *arr =[NSArray arrayWithObjects:@"1",@"2",@"3",@"4",@"5",nil];
4     //写入数据到文件中
5     if([arr writeToFile:@"/Users/liwei/Desktop/arr.plit" atomically:YES]){  NSLog(@"写入成功!"); }
6 
7 2.从文件中读取数据,并且放到数组中
8     NSArray *arr2 =[NSArray arrayWithContentsOfFile:@"/Users/apple/Desktop/arr.plist"];
9     NSLog(@"arrange=%@",arr2);

NSArray与字符串

1 用separator作拼接符将数组元素拼接成一个字符串
2 -(NSString *)componentsJoinedByString:(NSString *)separator;
3 字符串分隔
4 NSString *str=@"400-588-1688";
5 NSArray *arr =[str componentsSeparatedByString:@"-"];
6 NSLog(@"%@",arr);

NSMutableArray

1 概述:
2     NSmutableArray是NSArray得子类,
3     NSArray是不可变的,而NSMutableArray是可变的,随时可以往里面添加、更改、删除元素
4     //创建一个空的NSMutableArray
5     NSMutableArray *array = [NSMutableArray array];

NSMutableArray的基本使用

 1 //创建空数组
 2 NSMutableArray *arr = [NSMutableArray array];
 3 //创建一个指定长度为5的空数组
 4 NSMutableArray *arrange = [[NSMutableArray alloc]initWithCapacity:5];
 5 //创建一个数组,包含两个元素
 6 NSMutableArray *arr3 =[NSMutableArray arrayWithObjects:@"1",@"2",nil];
 7 //调用对象方法创建数组
 8 NSMutableArray *array=[[NSMutableArray alloc] initWithObjects:@"1",@"2",nil];
 9 
10 
  

NSMutable的方法

 1 添加一个元素
 2 -(void) addObject:(id)object;
 3 添加otherArray的全部元素到当前数组
 4 -(void) addjectsFromArdObray:(NSArray *)array;
 5 在index位置插入一个元素
 6 -(void)insertObject:(id) anObject atIndex:(NSUInteger) index;
 7 删除最后一个元素
 8 -(void)removeLastObject;
 9 删除所有的元素
10 -(void)removeAllObjects;
11 删除Index位置的元素
12 -(void)removeObjectAtIndex:(NSUInteger)index;
13 删除特定的元素
14 -(void)removeObject:(id)object;
15 删除range范围内的所有元素
16 -(void)removeObjectsInRange:(NSRange)range;
17 用anObject替换index位置对应的元素
18 -(void)replaceObjectAtIndex:(NSUInteger)index withObject:(id)anObject;
19 交换idx1 和 idx2位置的元素
20 -(void)exchangeObjectAtIndex:(NSUInteger)idxl withObjectAtIndex:(NSUInteger)idxisdx;

NSMutableArray 错误用法

1 NSMutableArray *array = @[@"bob",@"steve",@"john"];
2 [array addObject:@"Peter"];//错误,使用@[@"bob",@"steve",@"john"]这种方式创建的永远是NSArray(不可变数组);
3 
4 正确的做法
5 NSMutableArray *array =[NSMutableArray arrayWithArray:@[@"bob",@"steve",@"john"]];
6 [array addObject:@"Peter"];
原文地址:https://www.cnblogs.com/developer-wang/p/4508177.html