iOS不可变数组的所有操作

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS不可变数组的所有操作相关的知识,希望对你有一定的参考价值。

#pragma mark 创建数组

    //1.通过对象方法创建数组

    NSArray * array = [[NSArray alloc]initWithObjects:@"One",@"Two",@"Three",@"Four",@"Five", nil];

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

      //nil表示空,本质是0,如果是基础数据类型指针用NULL表,对象指向为空一般用nil表示 类对象为空用Nil;

      //  Class-->类类型

      //   SEL --> 选择器

    //通过类方法创建数组

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

        

    //从Xcode4.6以后数允许用下述方法创建对象

    //NSNumber @()快捷转换基本数组类型到NSNumber对象

    //有些公司不允许使用,为保持一致推荐使用对象方法或类方法创建的数组

    Dog * dog = [[Dog alloc]init];

    NSArray * array3 = @[@"One",@"Two",@"Three",@"Four",@"Five",dog];

       //id-->完成指针-->接收任何数据类型的对象

      //数组本身是一个对象

      //数组的元素如@"One",@"Two",@"Three",@"Four",@"Five"等都是任意类型对象,不仅限于字符串

       //创建数组对象时传参,传入的是对象的地址

       //数组中只能存储兑现搞得地址,而非存储对象的本体

       //同一个对象可以存放发两个数组中,仍然是同一个对象.

      //在一个数组中修改了对象,在另一个数组中读取对象,会发现也被修改了

      //数组可以存数组

        

       //其实%@可以打印任何对象,只要对对象重写description放来

        NSLog(@"%@",array3);

#pragma mark 数组成员的个数

    NSUInteger num = [array count];

        NSLog(@"%lu",num);

 

 

#pragma mark 数组的成员

    //0~n-1

    //错误信息: index 5 beyond bounds [0 .. 4]‘数组越界

    NSString * str  = [array objectAtIndex:3];

        NSLog(@"%@",str);

    //Xcode4.6 取数组成员

    NSLog(@"%@",array[2]);

        

#pragma mark 获取数组某元素在数组中的位置

   NSUInteger  index = [array1 indexOfObject:@"1"];

        NSLog(@"%lu",index);

 

#pragma mark 判断数组是否包含某个元素

        

    BOOL  tag  =  [array  containsObject:@"Five"];

        NSLog(@"%d",tag);

        

#pragma mark 获取第一个元素/最后一个元素

    NSString * str2 =[array1 firstObject];

    NSString * str3 = [array1 lastObject];

        NSLog(@"%@ %@",str2 , str3);

        

#pragma mark 将数组的元素进行拼接

     // 只对字符串对象操作

    NSString * str4 = [array componentsJoinedByString:@" "];

        NSLog(@"%@",str4);

        

#pragma mark 将字符串进行拆分

   NSString * str5 = @"YES,I am a so bad man";

   //拆分字符串

  NSArray * array4  = [str5 componentsSeparatedByString:@" "];

        NSLog(@"%@",array4);

    //拆分字符串,生成一堆新的子串,原字符串不变,该方法创建一个数组,将每个子串添加到当前数组中.

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

    NSArray * array5 = [str5 componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@", "]];

    //set是集合

    //[NSCharacterSet characterSetWithCharactersInString:@", "]这个方法创建一个集合的对象,返回对象地址,字符集合中的字符,来自字符串的@", "

        NSLog(@"%@",array5);

#pragma mark 数组元素的混杂

        Dog * dog1 = [[Dog alloc]init];

        Cat * cat1 = [[Cat alloc]init];

        Dog * dog2 = [[Dog alloc]init];

        Cat * cat2 = [[Cat alloc]init];

        Dog * dog3 = [[Dog alloc]init];

       

    NSArray * array6 = @[dog1,cat1,dog2,dog3,cat2];

        //判断对象属于某个类

    //-(BOOL)isKindOfClass:(Class)class;

     

        for (id obj in array6) {

            if([obj isKindOfClass:[Dog class]]){

                NSLog(@"B 哥");

            }

            if([obj isKindOfClass:[Cat class]]){

                NSLog(@"小 龙");

            }

        }

        

 

以上是关于iOS不可变数组的所有操作的主要内容,如果未能解决你的问题,请参考以下文章

iOS 中 关于 NSUserDefault中存储可变数组的问题

iOS可变数组添加元素 以及可变数组操作

IOS 中runtime 不可变数组__NSArray0 和__NSArrayI

可变数组集合ArrayList

Scala集合

scala数据结构与可变不可变