[Objective-C]NSArray与NSMutableArray详解

NSArray

NSArray的特点

 1.只能存储OC对象
 2.长度固定,一旦数组创建完成无法新增和删除元素
 3.每个元素都是紧密相连的,可通过下标访问
 4.元素是id类型的
 5.必须以nil结尾,表示有效元素到此结束

NSArray数组的使用

 1. 使用 %@ 可以打印NSArray数组中的所有内容
 2. NSArray无法存储基本数据类型,无法存储非OC对象
 3. 创建空数组没有意义  eg:NSArray *arr1 = [NSArray new];NSArray *arr2 = [[NSArray alloc] init];NSArray *arr3 = [NSArray array] ;

NSArray取出数组中的元素

 1.可以通过下标访问NSArray数组元素 越界就直接报错。     						NSArray *arr5=@[@"11",@"22",@"33"];
	            NSLog(@"%@",arr5[0]);
	            NSLog(@"%@",arr5[1]);
	            NSLog(@"%@",arr5[2]);
 2.调用NSArray数组对象的对象方法取出指定下标的元素
        NSArray *arr5=@[@"11",@"22",@"33"];
        NSString *str1 = [arr5 objectAtIndex:0];
        NSString *str2 = [arr5 objectAtIndex:1];
        NSString *str3 = [arr5 objectAtIndex:2];
 3.取出NSArray数组的首元素,除了使用下标,还可以用:arr.firstObject;
    区别:如果数组为空,arr[0]运行报错,但firstObject会取到nil;
 4.取NSArray数组中最后一个元素:arr.lastObject;

NSArray其他的常用方法

 1.得到NSArray数组中元素的个数:
        NSLog(@"arr.count = %lu",arr.count);
 2.判断NSArray中是否包含指定元素:
        BOOL res = [arr containsObject:@"11"];
        NSLog(@"%d",res);
 3.获取指定元素在NSArray数组中第一次出现的下标:
        NSUInteger idx=[arr indexOfObject:@"指定元素"];
        NSLog(@"index = %lu",idx);
    如果没有找到,返回NSUInteger的最大值:9223372036854775807

NSArray数组的遍历

1.for循环遍历:  for(;;){}
2.使用增强for循环:
     for(数据类型 变量名 in NSArray数组) {
        通过变量名获取NSArray数组中的每一个元素
    }
  eg:NSArray *arr=@[@"11",@"22",@"33"];
     for(NSString *str in arr)
     {
         NSLog(@"%@ ",str);
     }
    如果NSArray数组中的元素类型不一致,迭代变量建议使用id类型:
        for(id item in arr) {
            NSLog(@"%@ ",item);
        }
3.使用block遍历
    功能:将arr数组中的每一个元素遍历出来,然后执行程序猿传入<#code#>处的代码进行数据处理
            注意:1.通过obj获取NSArray数组中的每一个元素
                 2.idx---当前元素下标
                 3.将*stop赋值为YES,就可以停止循环

         [arr enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
             <#code#>
         }];
            

         eg: NSArray *arr = @[@"Saber",@"Archer",@"Luncer"];
             [arr enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
         NSLog(@"%@.length = %lu",obj,[obj length]);
         NSLog(@"idx = %lu",idx);
         if(idx==2) {
             *stop=YES;
         }
     }];

NSArray与字符串

1.将NSArray中的元素链接起来组成新的字符串:
    - (NSString *)componentsJoinedByString:(NSString *)separator
    参数:连接符
    eg: NSArray *arr = @[@"Saber",@"Archer",@"Luncer"];
        NSString *str = [arr componentsJoinedByString:@"--"];
        NSLog(@"%@ ",str);  //Saber--Archer--Luncer
2.将NSString以指定的分隔符分成一个数组,每一部分就是数组的一个元素
     NSString *str = @"1,2,3,4,5";
     NSArray *arr1 = [str componentsSeparatedByString:@","];
     NSLog(@"%@ ",arr1);// 1 2 3 4 5

NSArray的文件操作

	1.将定义好的NSarray数组以plist文件方式持久化存储
		- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile
	2.通过plist文件来创建NSArray数组
		+ (nullable NSArray<ObjectType> *)arrayWithContentsOfFile:(NSString *)path

NSMutableArray

NSMutableArray的特点

1.NSMutableArray仍是一个数组,是NSArray的子类,具备NSArray的特点
2.NSMutableArray数组的元素可以动态的新增和删除,其他的用法均与NSArray一致

NSMutableArray数组的创建

1.创建空数组,有意义,可以新增元素
     NSMutableArray *arr1 = [NSMutableArray new];
     NSMutableArray *arr2 = [[NSMutableArray alloc]init];
     NSMutableArray *arr3 = [NSMutableArray array];
2.创建非空数组
    NSMutableArray *arr4 = [NSMutableArray arrayWithObjects:@"Saber",@"Archer",@"Luncer",@"Caster",nil];
3.注意!!!
    这种创建方法是错误的:NSMutableArray *arr = @[@"1",@"2",@"3",@"4"];
    这种方法只能用于创建NSArray对象!

向NSMutableArray中新增元素

1.addObject方法:将传入的参数作为数组的元素添加进去
     NSMutableArray *arr1 = [NSMutableArray arrayWithObjects:@"Saber",@"Archer",@"Lancer",@"Caster",nil];
     [arr addObject:@"Tohsaka"];
     [arr addObject:@"Emiya"];
 
    注意:如果传入的参数是一个NSarray数组,则该数组仅作为1个元素新增到NSMutableArray中
    eg: NSMutableArray *arr1 = [NSMutableArrayarrayWithObjects:@"Saber",@"Archer",@"Lancer",@"Caster",nil]; //count = 4
        NSArray *nsarr = @[@"1",@"2",@"2"];
        [arr1 addObject:nsarr];
        NSLog(@"%lu",arr1.count); //count = 5
2.addObjectsFromArray方法:将另外一个数组中的每个元素逐个添加到可变数组中
	    NSMutableArray *arr1 = [NSMutableArrayarrayWithObjects:@"Saber",@"Archer",@"Lancer",@"Caster",nil]; //count = 4
	    NSArray *nsarr = @[@"1",@"2",@"2"];
	    [arr1 addObjectsFromArray:nsarr];
	    NSLog(@"%lu",arr1.count); //count = 7
3.向指定下标之前插入1个元素
  	    NSMutableArray *arr = [NSMutableArray arrayWithObjects:@"1",@"2",@"3",@"4",nil];    //1 2 3 4
    	[arr insertObject:@"0" atIndex:0];  //0 1 2 3 4
    	[arr insertObject:@"5" atIndex:5];  //0 1 2 3 4 5

删除MutableArray数组中的元素

	1.删除指定下标的元素
   		 [arr removeObjectAtIndex:0];    //删除下表为0处的元素     
    2.删除所有的值为指定值的元素
   		 [arr removeObject:@"Saber"];    //删除值为Saber的元素
    3.删除指定范围内的元素
   		 [arr1 removeObject:@"1" inRange:NSMakeRange(0, 2)];  //删除从下标0开始的2个长度范围内的值为“1”的元素
    4.删除最后一个元素
  		  [arr removeLastObject];
     5.删除所有元素
   		 [arr removeAllObjects];

NSMutableArray的文件操作

	1.将数组存进plist文件
		- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile
		eg: [mtarr writeToFile:@"/Users/heyuxuan/Desktop/mtarr.plist" atomically:NO];
	2.通过plist文件创建数组
		+ (nullable NSMutableArray<ObjectType> *)arrayWithContentsOfFile:(NSString *)path;
		eg: NSMutableArray *mtarr = [NSMutableArray arrayWithContentsOfFile:@"/Users/heyuxuan/Desktop/mtarr.plist"];
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值