NSArray (多种数组元素排序)

本文介绍了使用 Objective-C 进行数组排序的方法,包括数字排序、字母排序及包含字典的数组排序。提供了升序与降序的具体实现,并展示了如何通过 NSSortDescriptor 对数组进行定制化排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


#pragma mark - 数字排序


-(void)numArrayOnly
{
    //数值排序
    NSArray *sortArray = [[NSArray alloc] initWithObjects:@"1",@"3",@"4",@"7",@"8",@"2",@"6",@"5",@"13",@"15",@"12",@"20",@"28",@"",nil];
    
    NSArray *array = [sortArray sortedArrayUsingComparator:comparAsc];
    
}


//数值降序排序
NSComparator comparDes = ^(id obj1, id obj2){
    if ([obj1 integerValue] > [obj2 integerValue]) {
        return (NSComparisonResult)NSOrderedDescending;
    }
    
    if ([obj1 integerValue] < [obj2 integerValue]) {
        return (NSComparisonResult)NSOrderedAscending;
    }
    return (NSComparisonResult)NSOrderedSame;
};


//数值升序排序
NSComparator comparAsc = ^(id obj1, id obj2){
    if ([obj1 integerValue] > [obj2 integerValue]) {
        return (NSComparisonResult)NSOrderedAscending;
    }
    
    if ([obj1 integerValue] < [obj2 integerValue]) {
        return (NSComparisonResult)NSOrderedDescending;
    }
    return (NSComparisonResult)NSOrderedSame;
};


#pragma mark - 数字排序二

//数值排序 二  ascending YES=升序   NO=降序
    NSArray *sortDesc = @[[[NSSortDescriptor alloc] initWithKey:nil ascending:NO]];
    NSArray *sortSetArray = [sortArray sortedArrayUsingDescriptors:sortDesc];



#pragma mark - 字母排序

-(void)stringOnly
{
    //字母排序
    NSArray *sortArray2 = [[NSArray alloc] initWithObjects:@"a",@"bc",@"e",@"f",@"d",@"w",@"q",@"x",@"z",@"y",@"u",@"i",@"k",@"aa",nil];
    
    NSArray *array = [sortArray2 sortedArrayUsingSelector:@selector(compare:)];
    
    
}


#pragma mark - 数组包含字典排序 顺序

-(void)arrayAndDic
{

        NSArray *ary1 = [NSArray arrayWithObjects:@"5",@"4",@"3",@"2",@"1", nil];
        NSArray *ary2 = [NSArray arrayWithObjects:@"4",@"3",@"2",@"1", nil];
        NSArray *ary3 = [NSArray arrayWithObjects:@"3",@"2",@"1", nil];
        NSArray *ary4 = [NSArray arrayWithObjects:@"2",@"1", nil];
        NSArray *ary5 = [NSArray arrayWithObjects:@"1", nil];
        
        NSDictionary *dic1 = [NSDictionary dictionaryWithObjectsAndKeys:ary1,@"value",@"2015820",@"index",nil];
        NSDictionary *dic2 = [NSDictionary dictionaryWithObjectsAndKeys:ary5,@"value",@"2015810",@"index",nil];
        NSDictionary *dic3 = [NSDictionary dictionaryWithObjectsAndKeys:ary4,@"value",@"2015828",@"index",nil];
        NSDictionary *dic4 = [NSDictionary dictionaryWithObjectsAndKeys:ary3,@"value",@"2015824",@"index",nil];
        NSDictionary *dic5 = [NSDictionary dictionaryWithObjectsAndKeys:ary2,@"value",@"2015805",@"index",nil];
        NSMutableArray *listAry = [NSMutableArray arrayWithObjects:dic1,dic2,dic3,dic4,dic5, nil];
        
        //数组排序
        NSArray *sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"index" ascending:YES]];
        [listAry sortUsingDescriptors:sortDescriptors];

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值