使用两个标准对列表进行排序 - objective-c

Sorting list using two criteria - objective-c

我需要一些帮助,我正在尝试对 Objective-c 中的对象列表进行排序。

在对象中我有两个属性:NSDate:日期,字符串优先级(接收从 1 到 3 的数字)。

我需要使用这两个参数作为标准对列表进行排序。 我感谢任何指导。

您可以使用 NSSortDescriptor 来组合排序标准,例如:

@interface Item : NSObject

@property (nonatomic) NSDate *date;
@property (nonatomic) NSString *priority;

@end

@implementation Item

- (instancetype)initWithDate:(NSDate *)date priority:(NSString *)priority {
    if (self = [super init]) {
        self.date = date;
        self.priority = priority;
    }
    return self;
}

@end

...

NSDate *date = [NSDate new];
NSArray *items = @[
    [[Item alloc] initWithDate:date priority:@"1"],
    [[Item alloc] initWithDate:date priority:@"0"],
    [[Item alloc] initWithDate:date priority:@"3"],
    [[Item alloc] initWithDate:date priority:@"2"],
];

NSSortDescriptor* sort1 = [[NSSortDescriptor alloc] initWithKey:@"date" ascending:YES];
NSSortDescriptor* sort2 = [[NSSortDescriptor alloc] initWithKey:@"priority" ascending:YES];
    
NSArray *sorted = [items sortedArrayUsingDescriptors:@[sort1, sort2]];