Вы можете добавить категорию, чтобы объединить имя поля даты. Допустим, у экземпляров класса A есть поле «dateString», а у экземпляров класса B - «creationDateString» ...
@implementation A (SortByDate)
-(NSDate*)sortDate
{
static NSDateFormatter * formatter = nil ;
static dispatch_once_t once = 0 ;
dispatch_once( & once, ^{ formatter = ... } ) ;
return [ formatter dateFromString:self.dateString ] ;
}
@end
@implementation B (SortByDate)
-(NSDate*)sortDate
{
static NSDateFormatter * formatter = nil ;
static dispatch_once_t once = 0 ;
dispatch_once( & once, ^{ formatter = ... } ) ;
return [ formatter dateFromString:self.creationDateString ] ;
}
@end
Теперь вы можете сортировать все объекты в вашем массиве по их sortDate
свойству:
NSArray * sortedByDateArray = [ unsortedArray sortedArrayUsingComparator:^( id a, id b ){
return [ [ a sortDate ] compare:[ b sortDate ] ] ;
}];
РЕДАКТИРОВАТЬ Или с дескриптором сортировки:
NSArray * sortedArray = [ unsortedArray sortedArrayUsingDescriptors:[ NSArray arrayWithObject:[ NSSortDescriptor sortDescriptorWithKey:@"sortDate" ascending:YES ] ] ] ;