使用两个标准对列表进行排序 - 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]];
我需要一些帮助,我正在尝试对 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]];