cocoa - 帮助跨两个属性对 NSArray 进行排序(使用 NSSortDescriptor?)

标签 cocoa sorting nsarray nssortdescriptor

我有点像 NSSortDescriptor n00b。不过,我认为它是满足我需要做的事情的正确工具:

我有一个 NSArray,由带有键的对象组成,例如“名称”和“时间”。这里不再用语言表达,而是举个例子:

input:

name: time
B: 4
C: 8
B: 5
C: 4
A: 3
C: 2
A: 1
A: 7
B: 6


desired output:

name: time
A: 1 <---
A: 3
A: 7
C: 2 <---
C: 4
C: 8
B: 4 <---
B: 5
B: 6

因此这些值按“时间”排序并按“名称”分组。 A 排在第一位,因为他的时间值最小,并且 A 的所有值都依次出现。然后是 C,他的时间值是所有值中第二小的。我已经指出了确定名称如何排序的值;在每个名称组中,按时间排序。

如何以最有效的方式从输入到输出 NSArray? (CPU 和内存方面,不一定是代码方面。)我将如何为此构造 NSSortDescriptors,或使用任何其他方法?我不想自己动手,除非这是最有效的方法。

最佳答案

我的解决方案是:

    NSSortDescriptor *sortDescriptor1 = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];
    NSSortDescriptor *sortDescriptor2 = [[NSSortDescriptor alloc] initWithKey:@"time" ascending:YES];
    NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor1, sortDescriptor2, nil];

你可以试试

关于cocoa - 帮助跨两个属性对 NSArray 进行排序(使用 NSSortDescriptor?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2190275/

相关文章:

arrays - 当我成功对三个数组之一进行排序后,如何对其他数组进行排序

c++ - 用c++写桶排序

php - 将数据库中的值添加到数组中,排序并显示

objective-c - NSArray 对超出范围的对象表现得很奇怪

objective-c - 遍历 NSArray

iphone - 从 ALAsset url iOS 获取视频 NSData

cocoa - 当代码通过而不是接口(interface)更改属性时通知 cocoa 绑定(bind)系统

ios - 遍历 plist 文件并将数据存储在数组或字典中

objective-c - cocoa :设置键等价物

objective-c - 哪些是 cocoa 环境的免费可用的良好日志记录框架?