gpt4 book ai didi

ios - NSMutableOrderedSet 可以使用 NSSortComparator 进行排序吗?

转载 作者:行者123 更新时间:2023-11-29 00:41:24 24 4
gpt4 key购买 nike

在立即假设这是重复之前,请继续阅读。

我想对一个大的 NSMutableOrderedSet<NSString*> 进行排序以高效的方式。

我知道如何对 NSMutableOrderedSet<SomeObject*> 进行排序使用 NSSortComparator并将 key 设置为SomeObject的相关成员.

我也知道如何对 SomeObject 的数组进行排序使用 sortUsingComparator:^(id firstObject, id secondObject).

我也知道如何对数组进行排序,例如 NSNumber使用 sortedArrayUsingSelector:@selector(compare:)

但我想不通的是如何对 NSMutableOrderedSet 进行排序当项目是原生 Obj-C 对象时,例如 NSString 而不是用户定义的对象:

  • NSortComparator使用 key ,但是如果设置内容是 NSString 则没有 key 而不是自定义对象?所以这个不能用? (我注意到 NSSortComparator 有一个 SEL 属性,因此我认为可以将它设置为 NSString:compare ,但它是只读的)。
  • 我发现使用 sortUsingComparator 对大型数组(例如大约 50,000 项)进行排序很慢(几秒钟)但是排序 NSMutableOrderedSet使用 NSSortComparator 几乎可以立即包含相同类型的元素.因此,如果速度慢,我不想使用 sortUsingComparator 进行排序。
  • 我看不到 NSMutableOrderedSet 的方法例如 sortedArrayUsingSelector .

所以我的问题是,如果我不能使用 sortDescriptor,我该如何以有效的方式对集合进行排序?如果sortUsingComparitor慢吗?

我可以创建一个 DummyObject只包含一个 NSString并且有NSMutableOrderedSet<DummyObject*>然后使用 NSSortComparator 排序,但这似乎很疯狂,所以必须有一种更简单的方法,但我看不到 API、文档或过去的问题是什么。

最佳答案

NSMutableOrderedSet<NSString*> *set =  [[NSMutableOrderedSet<NSString*> alloc] init];
[set addObject:@"c"];
[set addObject:@"b"];
[set addObject:@"a"];

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"self" ascending:YES];
[set sortUsingDescriptors:@[sortDescriptor]

关于ios - NSMutableOrderedSet<NSString*> 可以使用 NSSortComparator 进行排序吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39397700/

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