iOS 数组排序和遍历

1、截取数组:

    NSArray *arr2 = [arr subarrayWithRange:NSMakeRange(0, 4)];


2、找出索引

    NSInteger index = [arr indexOfObject:<#(nonnull id)#>];


3、让数组中每个对象都调用某个方法

    [arr makeObjectsPerformSelector:@selector(@"testSelector") withObject:@"test"];


其中testSelector 是数组中对象的一个方法名称

4、数组拼接成字符串

    NSString *string = [arr componentsJoinedByString:@"=="];


5、遍历数组

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

        

        Student *st = (Student *)obj;

        //设定一个条件 跳出遍历

        if(idx < 5){

            

            *stop = YES;

        }

        NSLog(@"姓名:%@\n年龄:%@\n工龄:%@",st.name,st.age,st.workYear);]


6、数组排序

    //这得到的一个新的数组 原数组未改变

    NSArray *orderArr = [arr sortedArrayUsingComparator:^NSComparisonResult(id  _Nonnull obj1, id  _Nonnull obj2) {

     

        Student *st1 = (Student *)obj1;

        Student *st2 = (Student *)obj2;

        

        NSComparisonResult result = [st1.age compare:st2.age];//此表示升序按年龄的生序进行排列

       // NSComparisonResult result = [st2.age compare:st1.age];//此表示降序


        //遇到相同的 再按工龄升序排列

        if (result == NSOrderedSame) {

         

            result = [st1.workYear compare:st2.workYear];

        }

        

        return  result;

    }];

    

        //这表示对原数组额重新排列

    [arr sortUsingComparator:^NSComparisonResult(id  _Nonnull obj1, id  _Nonnull obj2) {

        Student *st1 = (Student *)obj1;

        Student *st2 = (Student *)obj2;

        

        NSComparisonResult result = [st2.age compare:st1.age];

        if (result == NSOrderedSame) {

            

            result = [st1.workYear compare:st2.workYear];

        }

        return  result;

    }];


7、高级排序

  //排序的条件 表示按照年龄的升序 其次按照工龄的降序排列

    NSSortDescriptor *ageDescriptor = [[NSSortDescriptor alloc] initWithKey:@"age" ascending:YES];

    NSSortDescriptor *workAge = [[NSSortDescriptor alloc] initWithKey:@"workYear" ascending:NO];

    NSArray *sortArr = @[ageDescriptor,workAge];

    [arr sortUsingDescriptors:sortArr];




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值