【问题标题】:how to sort array in descending oder in ios?如何在ios中按降序对数组进行排序?
【发布时间】:2015-12-11 09:28:35
【问题描述】:

我有一个数组如何按降序排序 下面是我需要排序的数组我该怎么做?下面是我写的代码

array(
"4.3",
"4.8",
"4.4",
"4.8",
"6.5"
) 


  NSSortDescriptor *sortDescriptor;
  sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"floats" ascending:YES];
  NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor];
  [sortArray sortUsingDescriptors:sortDescriptors];
  NSLog(@"sort array %@",sortArray);

【问题讨论】:

  • 您需要先将float转换为NSNumbe。然后您可以应用与 sortedArrayUsingComparator.Reference 进行比较

标签: ios objective-c arrays sorting


【解决方案1】:

试试下面的代码。

NSArray *arForData = @[@4.3,@4.8,@4.4,@4.8,@6.5];
NSArray *sortedArray = [arForData  sortedArrayUsingComparator:
                            ^NSComparisonResult(id obj1, id obj2){
                                //descending order
                                return [obj2 compare:obj1];
                                //ascending order
                                return [obj1 compare:obj2];
                            }];
NSLog(@"%@",sortedArray);

结果-降序 ( "6.5", "4.8", "4.8", "4.4", “4.3” )

结果-升序 ( "4.3", "4.4", "4.8", "4.8", “6.5” )

【讨论】:

  • sortedArrayUsingComparator 绝对是最灵活同时也是最有效的数组排序方式。由于您编写代码,它可以按您喜欢的任何方式排序。
【解决方案2】:

只需将NO 传递给ascending 参数:

sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"floats" ascending:NO];

【讨论】:

    【解决方案3】:
    NSArray *arr = [NSArray arrayWithObjects:@4.3,@4.8,@4.4,@4.8,@6.5,nil];
    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"floats" ascending:NO];
    NSMutableArray *sortArray = [NSMutableArray arrayWithObject:arr];
    [sortArray sortUsingDescriptors:@[sortDescriptor]];
    NSLog(@"sort array %@",sortArray);
    

    【讨论】:

    • 如果您需要多个建议,请仅给出一个答案,然后请更新此答案。
    猜你喜欢
    • 2014-02-16
    • 2011-02-08
    • 1970-01-01
    • 1970-01-01
    • 2013-09-20
    • 1970-01-01
    • 2020-03-06
    • 2019-01-01
    • 2013-01-10
    相关资源
    最近更新 更多