NSArray 和 NSMutableArray 定义和基本用法

本文详细介绍了ObjectiveC中NSArray和NSMutableArray的基本概念和操作,包括创建、访问元素、遍历数组以及增删改查等方法,通过实例展示了两种数组的使用方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

NSArray 和 NSMutableArray  定义和基本用法    : 

   /*

         NSArray oc数组,不可变数组

         */

        //====================================================

        //c数组,存的所有数据元素必须是相同的数据类型

        //创建数组


        NSArray *ary=[[NSArray alloc]init];//不这样初始化

        //ary1是不可变的,空数组,不可用。

        NSArray *ary1=[NSArray array];


        //ary2初始化时有一个元素。

        NSArray *ary2=[NSArray arrayWithObject:@"jereh"];

        

        //ary3初始化时有多个元素。不能nil作为元素,在里面不可以放空,也就是nil,也不能缺少和增加。

        NSArray *ary3=[NSArray arrayWithObjects:@"ios",@"oc",@"c"nil];

        

        //快速创建数组时,使用 @[<#objects, ...#>]快速创建,后面不需要加nil;

       

        NSArray *ary4=@[@"ios",@"oc",@"c"];

        

        //====================================================

        

        //oc数组元素的个数

        

        NSArray *ary5=@[@"ios",@"oc",@"c"];

        NSLog(@"count = %ld",ary5.count);

        //还可以:[ary5 count]调用get count方法,一半直接用ary5.count

        

        //访问数组的元素

        NSArray *ary6=@[@"ios",@"oc",@"c"];

        

        NSLog(@"访问元素:%@",[ary6 objectAtIndex:0]);//输出结果时ios

        NSLog(@"访问元素2%@",ary6[0]);//c中数组的取法

        

        //====================================================

 

        //1:遍历数组的元素(按照顺序输出)

        

        NSArray *ary7=@[@"ios",@"oc",@"c",@"jereh",@"hello"];

 

        for (int i=0; i<[ary7 count]; i++) {

            NSLog(@"%@",ary7[i]);//简便写法,有顺序的输出.

        }

        

         /*2:遍历数组的元素(快速遍历)for循环,取出oc对象,id类型进行遍历

        每个元素都赋值给obj对象遍历循环输出

          缺点:不知道取出来的对象在数组中的位置,想知道第几个加一个循环遍历

        */

        int i=1;

        for(id obj in ary7 ){

            NSLog(@"快速遍历:第 %i  ,元素是: %@",i,obj);

            i++;

        }

        

        /* 3:遍历数组元素:

         利用Block遍历数组元素,

         block:没有返回值,当前对象obj,遍历索引idx*stop控制停止的条件,为真的时候停止遍历,

         每遍历一个对象,block会被调用一次,方法参数自动生成,不用自己写。

         */

        //====================================================

 

//        void (^ myBlock) (id, NSUInteger,BOOL *)=^(id obj, NSUInteger idx, BOOL *stop) {

//            NSLog(@"Block遍历数组:第 %ld 个元素是:%@",idx,obj);

//            

//        };

//

        [ary7 enumerateObjectsUsingBlock:

         

         ^(id obj, NSUInteger idx, BOOL *stop) {

             

             if (idx>0) {

                 *stop=YES;//stop为真的时候停下,结束循环。

             }

 

              NSLog(@"Block遍历数组:第 %ld 个元素是:%@",idx,obj);

             

         }];

        //================================================================        

        /*

         

         NSMutableArray  可变的数组,oc对象

         NSMutableArrayNSArray的子类

 

         */

        //创建可变的数组

        //可变的数组初始化

        NSMutableArray *ary8=[NSMutableArray array];

        

        //添加元素

        [ary8 addObject:@"ios"];

        [ary8 addObject:@"oc"];

        [ary8 addObject:@"c"];

        

        //添加多个元素

        

        NSMutableArray *ary9=[NSMutableArray array];

        [ary9 addObjectsFromArray:ary1];

        NSLog(@"ary8= %@",ary9);

        

        //删除元素,移除元素

 

        NSMutableArray *ary10=[NSMutableArray arrayWithObjects:@"qiao",@"you",@"nan"nil];

        [ary10 removeObjectAtIndex:0];//根据索引位置

        [ary10 removeObject:@"nan"];//删除制定对象

        NSLog(@"%@",ary10);

        //删除最后一个元素

        

        [ary10 removeLastObject];

        

        //删除全部元素

        [ary10 removeAllObjects];

        NSLog(@"%@",ary10);

        

        //在指定位置范围内找到特定的元素进行删除

         NSMutableArray *ary11=[NSMutableArray arrayWithObjects:@"qiao",@"you",@"nan",@"xiao",@"qiao"nil];

        [ary11 removeObject:@"qiao"inRange:NSMakeRange(11)];

        NSLog(@"%@",ary11);

        [ary11 removeObjectsInRange:NSMakeRange(02)];

        NSLog(@"%@",ary11);

        

        //删除了同时存在中后面数组中的元素

        

        NSArray *aryy=@[@"nan"];

        [ary11 removeObjectsInArray:aryy];

        NSLog(@"%@",ary11);

        //======================================================================

        

        //添加一个数组中的全部元素到另外一个数组(重新设置数组),旧的数组中的元素全部删除,加上新数组的元素。

        NSArray *ary12=@[@"apple",@"hello"];

        

        NSMutableArray *ary13=[NSMutableArray arrayWithObjects:@"i",@"love",@"ios",nil];

        

        [ary13 setArray:ary12];

        

        NSLog(@"%@",ary13);

        

        //添加多个元素  在原来数组的基础上加上新数组的元素

        [ary13 addObjectsFromArray:ary12];

        NSLog(@"%@",ary12);

        

        //在索引位置添加元素

        [ary13 insertObject:@"jereh" atIndex:1];

        NSLog(@"%@",ary13);

        

        //替换数组中的元素

        

        NSMutableArray *ary14=[NSMutableArray arrayWithObjects:@"aa",@"bb",@"cc",@"dd",nil];

        [ary14 replaceObjectAtIndex:2 withObject:@"Cc"];

        NSLog(@"%@",ary14);

        

        NSArray *rary=@[@"ios",@"java",@"oc"];

        [ary14 replaceObjectsInRange:NSMakeRange(02withObjectsFromArray:rary];//0开始覆盖几个长度,自身的元素都替换过去

        NSLog(@"%@",ary14);

        

        //交换当前数组中某两个数组的元素

        [ary14 exchangeObjectAtIndex:0 withObjectAtIndex:2];

        NSLog(@"%@",ary14);

        

          //=================================================================

        

        //网址解析:解析出 www.baidu.com

        

        NSString *str=@"http://www.baidu.com:/shjsdkfhoiagksdnf";

        

        NSArray *ary15=[str componentsSeparatedByString:@"//"];

        

        NSLog(@"%@",ary15);

        

        NSString *str1=[NSString stringWithFormat:@"%@",ary15[1]];//lastObject

        

        NSLog(@"%@",str1);

        

        NSArray *ary16=[str1 componentsSeparatedByString:@":/"];

      

        NSLog(@"%@",ary16);

        

        NSLog(@"%@",ary16[0]);//www.baidu.com

       

        //======================================================================


练习题目:拼接字符串:输出结果是:I You am are a a good bad girl boy 


//        NSString *str3=@"I am a good girl";

//        NSString *str4=@"You are a bad boy";

//        NSArray *str5=[str3 componentsSeparatedByString:@" "];

//        NSLog(@"%@",str5);

//        NSArray *str6=[str4 componentsSeparatedByString:@" "];

//        NSLog(@"%@",str6);

//        NSMutableArray *ary17=[NSMutableArray array];

//        if ([str5 count]>=[str6 count] ) {

//             NSMutableArray *ary17=[NSMutableArray arrayWithArray:str5];

//            for (int i=0;i<[str6 count];i++) {

//                [ary17 insertObject:str6[i] atIndex:2*i+1];

//           //            }

//        }else {

//            NSMutableArray *ary17=[NSMutableArray arrayWithArray:str6];

//            for (int i=0;i<[str5 count];i++) {

//                [ary17 insertObject:str5[i] atIndex:2*i+1];

//         

//            }

//        }

//        

//        NSMutableString * endStr=[[NSMutableString alloc]init];

//    //输出数组 for循环遍历输出 

        for (int i=0; i<[ary17 count]; i++) {

            [endStr appendFormat:@"%@ ",ary17[i]];

        }


//        for(id obj in ary17){

//            [endStr appendFormat:@"%@ ",obj];

//          

//        }

//        NSLog(@"%@",endStr);

        

 

        

          //======================================================================


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值