• Objective


    OC中存储数据最常用 的两个容器就是数组和字典,而作为最常用的,应该了解这所有的特点,及用法。   

    OC中的数组是一个容量,有序的管理了一系列元素,并且存放在数组里的元素,必须是对象类型。

    不可变数组,见名知意,不可改变的,只要创建成功之后都不能改变数组容量,元素。

     创建一个不可变数组对象

        //1.初始化方法(多个对象用逗号隔开,并且最后一个对象与nil之间也要有逗号)

        NSArray *array1 = [[NSArray alloc] initWithObjects:@"zhonger",@"honghuang",@"taixu",@"zhili", nil]; //nil不是对象,只是一个标志,告诉编译器数组赋值结束

        //2.便利构造器

        NSArray *array2 = [NSArray arrayWithObjects:@"zhuba",@"bada",@"zhonger",@"duliu", nil];

     打印出的数据以()内容显示,比如:

    array1 is (
        zhonger,
        honghuang,
        taixu,
        zhili
    )

        //3.笑笑语法 语法糖,字面量  这是不可变数组的写法。。。

        //OC中的数组可以存放不同类型的对象

        NSArray *array3 = @[@"yousiyi", @"huangshenme", @"shuishen", @"qiuxiang", @12];

    //数组的两个核心方法  count  objectAtIndex:

        //count 求数组元素个数

        unsigned long count = [array1 count];

        NSLog(@"array1count is %lu",count);    //可以打印出元素的个数

        

        //objectAtIndex:通过给定的下标,找到相应的元素

        NSString *bada = [array2 objectAtIndex:1];

        NSLog(@"bada is %@",bada);

        NSString *zhonger = array2[2];  //语法糖表达方式 

        NSLog(@"zhonger is %@",zhonger);  

        

        //遍历array3里面的每一个元素

        unsigned long count1 = [array3 count];

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

            NSLog(@"%@",array3[i]);//语法糖

        }

        

        //判断数组中是否包含某个元素

        BOOL isTrue = [array2 containsObject:@"zhuba"];

        NSLog(@"isTrue is %d",isTrue);

        

        //获取某个元素所在的数组下标

        NSUInteger index = [array2 indexOfObjectIdenticalTo:@"bada"];

        NSLog(@"index is %lu",index);

     

        //通过数组来实现分割字符串,拼接字符串、

       //以空格分隔字符串

        NSString *str = @"zhonger m 19 m";

        NSArray *resultArray = [str componentsSeparatedByString:@" "];

       //以66666拼接字符串

        NSArray *rArray = @[@"bada", @"qiuxiang",@"zaiyiqi"];

        NSString *str1 = [rArray componentsJoinedByString:@"66666"];

     

    //至于可变数组,在不可变数组的情况下,提供了增删改的操作,让数组功能变得更加多样化

        //1.创建一个可变数组

        NSMutableArray *mArr = [[NSMutableArray alloc]initWithCapacity:0];

        //2.便利构造器

        NSMutableArray *mArr1 = [NSMutableArray arrayWithCapacity:0];

        

        //3.可变数组的字面量创建方式

        NSMutableArray *mArr2 = [@[@"zhonger", @"dada", @"zhuzhu", @"linlin"]mutableCopy];

     

        //往可变数组里添加元素,addobject

        [mArr2 addObject:@"addobject"];

     

        //往可变数组的指定位置插入一个新的元素  insertObject

        [mArr2 insertObject:@"charu" atIndex:1];

        

        //移除可变数组中的某一元素

        //通过下标

        [mArr2 removeObjectAtIndex:4];

        NSLog(@"mArr2 is %@",mArr2);

        //通过指定内容

        [mArr2 removeObject:@"zhuzhu"];

        NSLog(@"mArr2 is %@",mArr2);

        //删除数组中最后一个元素

        [mArr2 removeLastObject];

        NSLog(@"mArr2 is %@",mArr2);

        //删除数组中所有的元素

        //[mArr2 removeAllObjects];

        //NSLog(@"mArr2 is %@",mArr2);

        

        //替换可变数组中的元素

        [mArr2 replaceObjectAtIndex:0 withObject:@"gou"];

        [mArr2 replaceObjectAtIndex:1 withObject:@"taixu"];

        NSLog(@"mArr2 is %@", mArr2);

        

        //交换可变数组中两个元素的位置

        [mArr2 exchangeObjectAtIndex:0 withObjectAtIndex:1];

         NSLog(@"mArr2 is %@", mArr2);

        

    注意:无论是不可变还是可变数组,如果是在MRC环境下,只要加入这个数组中,都是导致引用计数加1,作为三大容量之一,数组存放的是有序的对象,不同于字典的有序,数组可以实现排序。

  • 相关阅读:
    Python 类和对象
    Python zxing 库解析(条形码二维码识别)
    MFC&Halcon之实时视频监控
    MFC&Halcon之图片显示
    Halcon11与VS2010联合开发
    堆排序程序中的小于等于号问题
    cenos7 u disk install
    UML类图关系表示
    socket http1
    mfc http
  • 原文地址:https://www.cnblogs.com/xueyao/p/5191393.html
Copyright © 2020-2023  润新知