Criação de NSDate a partir de NSString e classificação

Se o seu back-end está entregando datas com um formato impróprio (Anything else then unix timestamp). Você deve convertê-los em objetos NSDate com NSDateFormatter para classificá-los em ordem crescente ou decrescente. No exemplo acima, os objetos de modelo de array temporário contêm uma propriedade de data como string no formato 20130912 e o tempo é salvo em outra propriedade como 2215. Primeiro, criamos objetos NSDate adequados a partir dessas strings separadas e, em seguida, os classificamos.

NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
[formatter setDateFormat:@"yyyyMMdd HHmm"];

NSArray *sortedArray = [temporaryArray sortedArrayUsingComparator: ^(CUReservation *obj1, CUReservation *obj2) {

NSString *date1String = [NSString stringWithFormat:@"%@ %@",obj1.startdate, obj1.starttime];
NSDate *reservation1date = [formatter dateFromString:date1String];

NSString *date2String = [NSString stringWithFormat:@"%@ %@",obj2.startdate, obj2.starttime];
NSDate *reservation2date = [formatter dateFromString:date2String];

if (reservation1date && reservation2date)
{
if ([reservation1date compare:reservation2date] == NSOrderedDescending) {
return (NSComparisonResult)NSOrderedDescending;

}
else
{
return (NSComparisonResult)NSOrderedAscending;
}
}
else
{
return (NSComparisonResult)NSOrderedAscending;
}
}];