陣列元素為字典,包含日期鍵 "date",需依日期**由新到舊**(降冪)排序。
NSArray *unsortedArray = @[
@{@"name": @"A", @"date": [NSDate dateWithTimeIntervalSinceNow: -3600]},
@{@"name": @"B", @"date": [NSDate dateWithTimeIntervalSinceNow: -7200]},
@{@"name": @"C", @"date": [NSDate dateWithTimeIntervalSinceNow: 0]}
];
NSSortDescriptor *sortDesc = [NSSortDescriptor sortDescriptorWithKey:@"date" ascending:NO]; // NO = 降冪
NSArray *sortedArray = [unsortedArray sortedArrayUsingDescriptors:@[sortDesc]];
// 结果: C (最新), A, B (最旧)
NSLog(@"%@", sortedArray);
NSSortDescriptor *primary = [NSSortDescriptor sortDescriptorWithKey:@"date" ascending:NO];
NSSortDescriptor *secondary = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES];
NSArray *sorted = [array sortedArrayUsingDescriptors:@[primary, secondary]];
let sorted = array.sorted { ($0["date"] as! Date) > ($1["date"] as! Date) }
// 或使用 sort descriptor
let descriptor = NSSortDescriptor(key: "date", ascending: false)
let sorted = (array as NSArray).sortedArray(using: [descriptor])
NSDictionary 或 KVC 相容物件,鍵名需完全一致。NSDate 物件,而非字串,避免格式解析問題。ascending:NO 代表降冪(大到小),