zoukankan      html  css  js  c++  java
  • Foundation框架集合 ---- NSArray和NSMutableArray

    (1).NSArray :OC中使用的数组,是面向对象,并且是不可变数组。

       1.1OC数组不能存放nil值,只能存放OC对象、不能存放非OC对象类型,比如int、strcut、enum等;

       1.2 C数组  【缺点 : 数据的类型必须相同】

        int a = 3;  

        int number[5]  = {0,1,2,3,4}; 

       1.3 OC数组的创建 【保存的对象可以是不同的对象,但只能保存对象,需要转换成对象才能加入数组】

         NSArray *array = [NSArray array];   // 1.这个数组永远是个空数组

         NSArray *array1 = [NSArray arrayWithObject:@"lh"];  // 2.这个数组只有一个元素,并且永远只有一个元素

         NSArray *array2 = [NSArray arrayWithObjects:@"lh",@"r3",nil];  //3.多个数组实例化方式,以nil结尾,nil是数组元素结束的标记 

             NSArray *array3 = @[@"lh" , @"yg" , @"wy" , @"123"];   //快速创建一个NSArray对象

       1.4 对象方法[array count] ;     获取数组的长度(元素的个数)

                 例子  :  NSLog(@"%ld" ,  array3.count] ;  //  4

            [array   objectAtIndex 1] ;  传入数组角标的id得到数据对象,使用索引访问。

              例子 : NSLog(@"%@", [array3 objectAtIndex:1];  // yg

            [array indexOfObject:obj] ;  // for in  遍历    

            [arrayWithObjects:..] ;   向数组对象初始化赋值,这里可以写任意对象的指针,结尾必须使用nil

     

       1.5 NSArray的遍历

        1.5.1 for循环遍历

              Person *p = [[Person alloc] init];    // 创建一个Person类的对象

          NSArray *array = @[p , @"hangda" , @"IOS"];  // 实例化数组

            NSUInterger  count = [array count];

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

                NSLog(@"%ld --  %@", i , [array indexAtIndex:i]);

           }

               1.5.2 for  in 遍历

              for(id  obj  in  array){     // id 代表着数组中每一个元素对象

              NSUInter i = [array indexOfObject:obj];

                NSLog(@"%ld - %@",i,obj);

                // 提前结束遍历

                   if(i == 1)

                  {

                               break;   // 只用于switch 和 循环判断

                           }

               }

          1.5.3 block遍历 , 苹果官方推荐使用,效率高  

           // 每次获取到一个对象元素,就会调用block,并且把当前的元素和索引位置当作参数传递给block

           [arrry enumerateObjectsUsingBlock :

         ^ (id obj , NUInteger idx , BOOL *stop)

         {

             NSLog(@"%ld -  %@ , idx , obj");

             if (idx == 0)
            {

                    // 停止遍历  

             *stop  = YES ; // YES == 1 == true

            }

         }

    (2) NSMutableArray 可变数组

            2.1 基本使用 (NSMutableArray继承自NSArray , 几乎拥有NSArray的一切方法)

         创建可变数组 NSMutableArray *array = [NSMutableArray array] ;   // 可变

                    NSMutableArray *array1 = [NSMutableArray arrayWithObjects:@"lh", @"wy" , nil];

         添加元素    // 添加Person类对象元素

                  [array1 addObjct:[[Person alloc] init ]; 

                // 添加一个字符串对象元素

                [array1 addOject:@"yanggang"];

                  // OC数组添加元素不能为nill(空值)

           删除元素      //删除所有元素  

                 [array removeAllObjects];

                // 删除指定对象

               [array removeObject: @"yanggang"];

                   //  根据所有删除指定元素

                [array removeObjectAtIndex: 0]; 

    可以选择,但是别选择放弃
  • 相关阅读:
    Delphi 字符串操作
    SQL Browser (数据浏览器)
    .NET 3.5和VS 2008中的ASP.NET AJAX(转帖)
    delphi 最快速编码 URLDecode URLEncode
    Delphi 2007 如何安装控件
    Delphi TWebBrowser编程简述(转帖)
    delphi TStringList的用法
    Javascript+xmlhttp调用Webservice以及注意事项
    使用VSS 的Shadow folder的一点问题
    delphi 如何将XML格式的字符串导入ClientDataSet中
  • 原文地址:https://www.cnblogs.com/hangdada/p/4985197.html
Copyright © 2011-2022 走看看