Смотрите этот пост для сортировки массива, содержащего объекты NSDate:
Сортировать NSArray из строк или объектов даты
и мой за удаление времени:
Усечение NSDate (время обнуления)
Сложение
1) Циклически перебирайте свой массив объектов NSDate, удаляя (обнуляя) временные компоненты и добавляя их в новый массив:
NSMutableArray *newDateArray = [NSMutableArray array];
for (NSDate *d in myDateArray)
{
unsigned int flags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit;
NSCalendar* calendar = [NSCalendar currentCalendar];
NSDateComponents* components = [calendar components:flags fromDate:d];
//Taking the time zone into account
NSDate *dateOnly = [[calendar dateFromComponents:components] dateByAddingTimeInterval:[[NSTimeZone localTimeZone]secondsFromGMT]];
[newDateArray addObject:dateOnly];
}
2) Теперь, когда у вас есть новый массив, состоящий из объектов NSDate с нулевыми компонентами времени, вы можете отсортировать их:
[newDateArray sortUsingSelector:@selector(compare:)];
Эта строка сортирует массив, используя собственный метод сравнения объекта NSDate.