苹果开发基础——NSArray排序


 // 数组排序1(selector自然排序)
    NSArray *array = @[@"2", @"5", @"4", @"8"];
    // 返回一个排好序的数组,原数组不会改变
    // 制定元素的比较方法
    NSArray *sortedArray = [array sortedArrayUsingSelector:@selector(compare:)];
    
    NSLog(@"%@\n%@", array, sortedArray);



// 数组排序2(selector优先级排序)
    Student *stu1 = [Student studentWithFirstName:@"B" andWithLastName:@"D"];
    Student *stu2 = [Student studentWithFirstName:@"C" andWithLastName:@"F"];
    Student *stu3 = [Student studentWithFirstName:@"A" andWithLastName:@"C"];
    Student *stu4 = [Student studentWithFirstName:@"B" andWithLastName:@"A"];
    Student *stu5 = [Student studentWithFirstName:@"C" andWithLastName:@"B"];
    NSArray *array = [NSArray arrayWithObjects:stu1, stu2, stu3, stu4, stu5, nil];
    
    NSArray *sortedArray = [array sortedArrayUsingSelector:@selector(compareStudent:)];
    
    NSLog(@"%@", sortedArray);

//     数组排序3(Block优先级排序)推荐
        Student *stu1 = [Student studentWithFirstName:@"B" andWithLastName:@"D"];
        Student *stu2 = [Student studentWithFirstName:@"C" andWithLastName:@"F"];
        Student *stu3 = [Student studentWithFirstName:@"A" andWithLastName:@"C"];
        Student *stu4 = [Student studentWithFirstName:@"B" andWithLastName:@"A"];
        Student *stu5 = [Student studentWithFirstName:@"C" andWithLastName:@"B"];
        NSArray *array = [NSArray arrayWithObjects:stu1, stu2, stu3, stu4, stu5, nil];
    
        NSArray *sortedArray = [array sortedArrayUsingComparator:^NSComparisonResult(Student *obj1, Student *obj2) {
            NSComparisonResult result = [obj1.firstName compare:obj2.firstName];
    
            if (result == NSOrderedSame) {
                result = [obj1.lastName compare:obj2.lastName];
            }
            return result;
        }];
        NSLog(@"%@", sortedArray);

    // 数组排序4(使用排序描述器NSSortDescriptor)
            Student *stu1 = [Student studentWithFirstName:@"B" andWithLastName:@"D" andWithBookName:@"CBook"];
            Student *stu2 = [Student studentWithFirstName:@"C" andWithLastName:@"F" andWithBookName:@"BBook"];
            Student *stu3 = [Student studentWithFirstName:@"A" andWithLastName:@"C" andWithBookName:@"CBook"];
            Student *stu4 = [Student studentWithFirstName:@"B" andWithLastName:@"A" andWithBookName:@"CBook"];
            Student *stu5 = [Student studentWithFirstName:@"C" andWithLastName:@"B" andWithBookName:@"ABook"];
            NSArray *array = [NSArray arrayWithObjects:stu1, stu2, stu3, stu4, stu5, nil];
    
            NSSortDescriptor *sortWithBookName = [NSSortDescriptor sortDescriptorWithKey:@"book.name" ascending:YES];
            NSSortDescriptor *sortWithFirstName = [NSSortDescriptor sortDescriptorWithKey:@"firstName" ascending:YES];
            NSSortDescriptor *sortWithLastName = [NSSortDescriptor sortDescriptorWithKey:@"lastName" ascending:YES];
    
            NSArray *descs = [NSArray arrayWithObjects:sortWithBookName, sortWithFirstName, sortWithLastName, nil];
    
            NSArray *sortedArray = [array sortedArrayUsingDescriptors:descs];
            NSLog(@"%@",sortedArray);


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值