不可变数组NSArray和可变数组

1、创建数组对象


  (1)实例方法创建数组对象

           //Xcode 4.6 以后允许用下述方式来创建数组;

        NSArray * array1 = @[@"one", @"two", @"three", [NSString stringWithFormat:@"%d", 1]];

        //用另外一个数组创建数组

        NSArray * array2 = [[NSArray alloc] initWithArray:array1];

               

        //用 要保存的对象来创建数组

        NSArray * array3 = [[NSArray alloc] initWithObjects:@"one", @"two", @"three", nil];

            

               (2)类方法创建数组对象

//用类方法创建数组

        NSArray * array4 = [NSArray arrayWithArray:array3];

        NSString * array5 = [NSArray arrayWithObjects:@"one", @"two", @"three", nil];

  

2、遍历数组 

  NSArray * array = @[@"one" @"two",@"three"]

        //[array count];给数组对象发送count的消息,来获取数组元素的个数

        //for 循环遍历

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

             NSString * str = array[i];

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

//            NSLog(@"%@", [array objectAtIndex:i]);

        }

        

        //for(指针 in 需要遍历的集合){

        //

        //}

        //for  in 循环,循环一旦开始,就不能去改变集合

        for (NSString * str in array) {

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

        }

        

        //枚举器遍历

        NSEnumerator * emu = [array objectEnumerator];

        NSString * str;

        while ((str = [emu nextObject]) != nil) {

            NSLog(@"%@", str);

        }


3、不可变数组NSArray常用方法

<1>获取数组元素个数

                            [array count];


   <2>通过索引获取相应的元素

                            [array objectAtIndex:2];


   <3>通过对象地址获取在数组中的索引

      NSUInteger i = [array indexOfObject:@"one"];

    

   <4>判断数组中数组包含元素anObject

  BOOL b = [array containsObject:@"two"];

       

        <5>获取数组的最后一个元素

        [array lastObject];

   <6>把数组元素内容按照字符串进行拼接

        NSString * str1 = [array componentsJoinedByString:@"#"];

              <7>把字符串转换数组,是<7>的逆过程

//将字符串按照传入的字符进行分割,并且把分割好的字符串放进一个数组中返回

        NSString * str2 = @"yes i am a so bad man";

          NSArray * array1 = [str2 componentsSeparatedByString:@" "];

//用传入的字符串的所有字符创建一个字符集合

       NSCharacterSet * set = [NSCharacterSet characterSetWithCharactersInString:@" ,.*"];

       NSArray * array2 = [str2 componentsSeparatedByCharactersInSet:set];


       <8>不可变数组的排序

NSArray *array1 = @[@"5",@"4",@"3",@"2",@"1"];

        //系统提供的方法  默认升序 不可变数组的排序

        NSArray *array2 = [array1 sortedArrayUsingSelector:@selector(compare:)];


4、可变数组(NSMutableArray)对象进行增删改操作的方法

                  (1)【重置数组】

  [muArray3 setArray:muArray];

 (2)【追加和插入元素】

//添加元素

           [muArray3 addObject:@"four"];

             //在指定位置插入元素

             [muArray3 insertObject:@"five" atIndex:4];

(3)【删除元素】

//删除传入的对象

             [muArray3 removeObject:@"five"];

            //删除所有元素

     [muArray3 removeAllObjects];

            //删除最后一个元素

            [muArray3 removeLastObject];

(4)【替换指定位置的元素】

//替换指定位置的元素

        [muArray3 replaceObjectAtIndex:0 withObject:@"***"];

(5)【交换两个元素的位置】

//元素交换位置

         [muArray3 exchangeObjectAtIndex:0 withObjectAtIndex:1];

5、可变数组的排序

(1)使用冒泡两层for循环对可变数组排序

NSMutableArray * array = [[NSMutableArray alloc] initWithObjects:@"one", @"two", @"three", @"four", nil];

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

        {

            for(int j = 0; j < [array count] - 1 - i; j++)

            {

                NSString * str1 = array[j];

                NSString * str2 = array[j+1];

                NSComparisonResult result = [str1 compare:str2];

                if(result == NSOrderedDescending)

                {

                    [array exchangeObjectAtIndex:j withObjectAtIndex:j+1];

                }

            }

        }


(2)可变数组系统方法排序

  NSArray *array1 = @[@"5",@"4",@"3",@"2",@"1"];

//可变数组

        NSMutableArray *array2 = [NSMutableArray arrayWithArray:array1];

        //无返回值 改变数组元素的顺序

        [array2 sortUsingSelector:@selector(compare:)];


数字对象

如何把基本数据类型(int char long NSInteger BOOL)存放到OC数组或者字典对象中

  NSNumber * number = [[NSNumber alloc] initWithInt:i];

           NSArray * array = [[NSArray alloc] initWithObjects:number, nil];


6、类型判断:- (BOOL)isKindOfClass:(Class)aClass;

    Person * person = [[Person alloc] init];

        BOOL b = [person isKindOfClass:[Person class]];

        if (b) {

            NSLog(@"小明是Person 创建出来的对象");

        }else{

            NSLog(@"小明不是Person 创建出来的对象");

       }


你可能感兴趣的:(Object-C学习笔记)