首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在NSArray中对数字进行排序?

如何在NSArray中对数字进行排序?
EN

Stack Overflow用户
提问于 2012-06-25 00:48:55
回答 5查看 26.3K关注 0票数 9

我想不通怎么做这件事。

我从plist中获取数组,这个数组充满了数字(在plist中设置)。现在我需要做的就是对它们进行排序,使它们按降序排列,但我做不到这一点。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-06-25 00:53:21

试一下这段代码?

代码语言:javascript
运行
复制
 NSArray *array = /* loaded from file */;
 array = [array sortedArrayUsingSelector: @selector(compare:)];
票数 43
EN

Stack Overflow用户

发布于 2012-06-25 01:07:48

下面将按升序对数字进行排序,然后反转结果以给出降序的数字:

代码语言:javascript
运行
复制
NSArray *sorted = [[[array sortedArrayUsingSelector:@selector(compare:)] reverseObjectEnumerator] allObjects];

前面的问题还有一些其他的选择:Sort an NSArray in Descending Order

票数 15
EN

Stack Overflow用户

发布于 2015-03-05 01:19:12

这里是使用比较块的众多方法中的一个。对于任何包含要排序的数字的数组,此代码片段都很方便。对于升序:

代码语言:javascript
运行
复制
AscendingArray = [UnsortArray sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
    if ([obj1 integerValue] > [obj2 integerValue]) {
      return (NSComparisonResult)NSOrderedDescending;
    }

    if ([obj1 integerValue] < [obj2 integerValue]) {
      return (NSComparisonResult)NSOrderedAscending;
    }
    return (NSComparisonResult)NSOrderedSame;
  }];

对于降序:

代码语言:javascript
运行
复制
DescendingArray = [UnsortArray sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
    if ([obj1 integerValue] > [obj2 integerValue]) {
      return (NSComparisonResult)NSOrderedAscending;
    }

    if ([obj1 integerValue] < [obj2 integerValue]) {
      return (NSComparisonResult)NSOrderedDescending;
    }
    return (NSComparisonResult)NSOrderedSame;
  }];
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11179300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档