oc学习之Foundation框架--数组

接下来要总结的是oc中的集合类,NSArrayNSDictionary以及NSSet

首先是NSArray

oc数组有两种:NSArray(不可变的数组)NSMutableArray可变的数组),其中NSArrayNSMutableArray的父类.


//NSArray

//创建

//创建不可变数组,空的数组,不能在里面放东西,不用!!

  NSArray *array = [NSArray array];

        

//创建有多个元素的数组,nil 是结束的标志,不能缺少

  NSArray *array2 = [[NSArray alloc] initWithObjects:@"apple", @12, nil];

  NSArray *array3 = [NSArray arrayWithObjects:@"as", @14, nil];

  NSArray *array4 = [NSArray arrayWithObject:@"www"]; //只有一个元素

        

//创建数组,里面的元素为参数数组中的元素

  NSArray *array5 = [NSArray arrayWithArray:array2];

        

//快速创建不可变的数组,推荐使用!!但是只能用于 NSArray,而不能用于 NSMutableArray

   NSArray *array6 = @[@"apple", @"cc", @89, array3];

        

//获取数组中元素的个数,不包含结束标志,只包含有效的元素个数

  NSUInteger count = array6.count;


//访问数组中的元素:

  //1.根据索引位置获取

    id obj1 = [array6 objectAtIndex:0];

        

  //2.采用c的数组的访问方式

    id obj2 = array6[1];


//遍历数组

  //1.循环

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

            id obj = [array6 objectAtIndex:i];

            NSLog(@"array6[%i] --- %@",i,obj);

        }

        

  //2.for in,快速遍历,取出数组中的每个对象

        for (id obj in array6) {

            NSLog(@"%@", obj);

        }

        

  //3.利用block遍历

        [array6 enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {

            NSLog(@" %lu 个元素是 %@",idx,obj);

            if (idx==1) {

                *stop = YES; //到下标 1,之后跳出循环,停止遍历

            }

        }];




//NSMutableArray

//创建可变的空数组

NSMutableArray *ary1 = [NSMutableArray array];


//添加一个元素

  [ary1 addObject:@"apple"];

        

//添加多个元素,多个元素要放到一个数组中

  [ary1 addObjectsFromArray:@[@21, @"ios", @"apple", @"apple"]];


//删除指定元素(如果该元素出现多次,那么多次出现的都删掉)

  [ary1 removeObject:ary1[0]]; 

        

//根据索引位置删除元素

  [ary1 removeObjectAtIndex:0];

        

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

  [ary1 removeObjectsInArray:@[@"c", @"java"]];

        

//删除最后一个元素

  [ary1 removeLastObject];

        

//在指定的范围内查找删除某个元素

  [ary1 removeObject:@"c" inRange:NSMakeRange(0, 1)];

        

//删除所有的元素

  [ary1 removeAllObjects];

        

//删除指定范围内的元素

  [ary1 removeObjectsInRange:NSMakeRange(0, 1)];



//插入一个元素

  [ary1 insertObject:@"apple" atIndex:3];


//重新设置数组中的元素

  [ary1 setArray:@[@"as", @21, @"ask"]];


//在指定的索引位置替换元素

  [ary1 replaceObjectAtIndex:1 withObject:@"1"];

        

//用新的数组去替换指定范围内的元素:元素的个数不需要和原来的个数一致

  [ary1 replaceObjectsInRange:NSMakeRange(0, 2) withObjectsFromArray:@[@"a", @"n", @43]];


//交换两个指定索引位置的元素

 [ary1 exchangeObjectAtIndex:0 withObjectAtIndex:1];



//数组排序

//把数组中字符串排序

  //方式一:冒泡 升序

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

            for (int j=0; j<muAry.count-i-1; j++) {

                if ([muAry[j] compare: muAry[j+1]] == NSOrderedDescending) {

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

                }

//方式二:sortedArrayUsingSelector:只能是默认的升序排列            }

NSArray *sortAry = [ary sortedArrayUsingSelector:@selector(compare:)];


//方式五三:根据某些条件,将数组中的元素排序。

//假定数组中的元素是几个学生类的对象

NSArray *stuAry = @[stu1,stu2,stu3];

  //按照学号降序排列,参数一:用于排序的属性名;参数二:升序还是降序的布尔值。

    NSSortDescriptor *des1 = [NSSortDescriptor sortDescriptorWithKey:@"num" ascending:NO];

    NSArray *stuSortAry = [stuAry sortedArrayUsingDescriptors:@[des1]];


        }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值