我有一系列词典。在每个字典中,有一个键dateOfInfo
(一个NSDate
)和其他几个东西。我想按每个词典dateOfInfo
对数组进行排序,最新的是第一个结果。
我该怎么做?
答案 0 :(得分:16)
您可以使用NSSortDescription
进行排序,例如
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey: @"dateOfInfo" ascending: NO];
NSArray *sortedArray = [array sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]];
[sortDescriptor release];
您也可以使用方法
- (NSArray *)sortedArrayUsingFunction:(NSInteger (*)(id, id, void *))comparator context:(void *)context
答案 1 :(得分:1)
基本的气泡排序算法可行。在这种情况下,您需要循环遍历数组,在[array objectAtIndex:]上使用valueForKey消息来获取NSDate值。有关比较日期,请参阅此post。因此,如果您按日期的升序排序,只需将具有较低日期的对象(请记住气泡排序比较?)添加到一个数组中,该数组将保存您的排序结果。
答案 2 :(得分:0)
尝试这样,
NSDateFormatter *fmtDate = [[NSDateFormatter alloc] init];
[fmtDate setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"];
NSComparator compareDates = ^(id string1, id string2)
{
NSDate *date1 = [fmtDate dateFromString:string1];
NSDate *date2 = [fmtDate dateFromString:string2];
return [date1 compare:date2];
};
NSSortDescriptor * sortDesc1 = [[NSSortDescriptor alloc] initWithKey:@"StartTime" ascending:YES comparator:compareDates];
[youArray sortUsingDescriptors:@[sortDesc1]];