按照NSDatesorting词典数组

我有一个字典arrays。 在每个字典中,都有一个关键的dateOfInfo (一个NSDate )和其他一些东西。 我想sorting数组每个字典dateOfInfo与最近的第一个结果。

我怎样才能做到这一点?

您可以使用NSSortDescription进行sorting,例如

 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 

基本的气泡sortingalgorithm将起作用。 在这种情况下,您需要遍历数组,在[array objectAtIndex:]上使用valueForKey消息来获取NSDate值。 比较date看到这个职位 。 因此,如果按照date升序进行sorting,只需将具有较低date(记住气泡sorting比较?)的对象添加到将保存sorting结果的数组中。

像这样尝试,

  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]];