gpt4 book ai didi

iphone - 根据受欢迎程度对 NS(Mutable)Array 进行排序

转载 作者:行者123 更新时间:2023-11-29 13:36:17 29 4
gpt4 key购买 nike

我知道如何按字母表对数组进行排序,但我想按其中对象的受欢迎程度对我的 NSMutableArray 进行排序。想象一个包含以下对象的数组:

  • B
  • 一个
  • C
  • B
  • B
  • 一个

我想按受欢迎程度对这些对象进行排序并创建一个这样的数组:

  • B
  • B
  • B
  • 一个
  • 一个
  • C

有没有一种既好又快捷的方法来做到这一点?也许是 NSSortDescriptor 的关键? (找不到那个)

谢谢

最佳答案

简而言之,为了简洁起见,我对数组文字使用了新语法。

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{

@autoreleasepool {
NSArray *ar = @[@"B", @"A", @"C", @"B", @"B", @"A"];
NSCountedSet *countedSet = [NSCountedSet setWithArray:ar];
NSArray *sorted = [ar sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
NSInteger diff = [countedSet countForObject:obj1] - [countedSet countForObject:obj2];
if (diff < 0)
return NSOrderedDescending;
else if (diff > 0)
return NSOrderedAscending;
else
return NSOrderedSame;
}];
NSLog(@"%@", ar);
NSLog(@"%@", sorted);
}
return 0;
}

输出

2012-05-08 07:25:18.465 Sort[20434:303] (
B,
A,
C,
B,
B,
A
)
2012-05-08 07:25:18.468 Sort[20434:303] (
B,
B,
B,
A,
A,
C
)

关于iphone - 根据受欢迎程度对 NS(Mutable)Array 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10500114/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com