iOS开发中对数组元素进行排序

直接上代码, 请看:

//
//  ViewController.m
//  数组排序
//
//  Created by Wangjunling on 16/4/12.
//  Copyright © 2016年 Wangjunling. All rights reserved.
//

#import "ViewController.h"
#import "Person.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    [self sortFunc1];
    [self sortFunc2];
    
}
//方法1
- (void)sortFunc1 {
     NSArray *arr = @[@2, @9, @334, @66, @5, @15];
    //1.使用系统的Compare方法
    NSArray *sortResultArr = [arr sortedArrayUsingSelector:@selector(compare:)];
    NSLog(@"%@", sortResultArr);
}
//方法2
- (void)sortFunc2 {
    Person *p1 = [Person new];
    p1.name = @"xiaohua5";
    p1.age = 18;
    p1.score = 99;
    Person *p2 = [Person new];
    p2.name = @"xiaohua8";
    p2.age = 18;
    p2.score = 88;
    Person *p3 = [Person new];
    p3.name = @"xiaohua6";
    p3.age = 17;
    p3.score = 77;
    NSArray *personArr = @[p1, p2, p3];
    //2.使用自定义的compare方法, 此方法为block形式,代码简洁直观
    NSArray *sortResultArr = [personArr sortedArrayUsingComparator:^NSComparisonResult(Person *obj1, Person *obj2) {
        NSComparisonResult result = [@(obj1.age) compare:@(obj2.age)];

        if (result == NSOrderedSame) {
            result = [obj1.name compare:obj2.name];
        }
        return result;
    }];
     NSLog(@"%@", sortResultArr);
}
//方法3 通过排序描述器排序, 此方法方便通过某个字段去比较, 在实际开发中最常见
- (void)sortFunc3 {
    Person *p1 = [Person new];
    p1.name = @"xiaohua5";
    p1.age = 18;
    p1.score = 99;
    Person *p2 = [Person new];
    p2.name = @"xiaohua8";
    p2.age = 18;
    p2.score = 88;
    Person *p3 = [Person new];
    p3.name = @"xiaohua6";
    p3.age = 17;
    p3.score = 77;
    NSArray *personArr = @[p1, p2, p3];
    //排序描述:即要排序的字段,
    NSSortDescriptor *descriptor1 = [NSSortDescriptor sortDescriptorWithKey:@"age" ascending:true];
    //排序描述:即要排序的字段,
    NSSortDescriptor *descriptor2 = [NSSortDescriptor sortDescriptorWithKey:@"score" ascending:true];
    //Descriptors参数为数组, 放入要排序的字段, 系统会按照先后顺序排序,
    //上面的p1 p2 p3 先按照年龄排序, 年龄一样的在按照分数排序
    NSArray *sortResultArr = [personArr sortedArrayUsingDescriptors:@[descriptor1,descriptor2]];
    NSLog(@"%@", sortResultArr);
}








- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值