Que tipo de erro sarcástico é esse iOS?

Eu tenho algum código que eu uso para classificar as datas do calendário que se parece com isso:

#if !(TARGET_IPHONE_SIMULATOR)
    NSString *formatString = [NSDateFormatter dateFormatFromTemplate:@"HH:mm dd MMM yyyy" options:0
                                                              locale:[NSLocale currentLocale]];
    [fmt setDateFormat:formatString];
#else
    [fmt setDateFormat:@"HH:mm dd MMM yyyy"];
#endif

Se eu correr no simulador, tudo está bem. Se eu executar no dispositivo, recebo esta mensagem de depuração sarcástica.

2012-09-19 22: 40: 13.972 APPNAME [4923: 907] * - [__ NSCFCalendar componentes: fromDate:]: data não pode ser nula

Quero dizer realmente, o que você acha que essa operação deve significar com uma data nula?

Uma exceção foi evitada por enquanto.

Alguns desses erros serão relatados com esta queixa, então novas violações simplesmente farão, silenciosamente, qualquer resultado aleatório do zero. Aqui está o backtrace em que isso ocorreu desta vez (alguns quadros podem estar ausentes devido a otimizações do compilador):

Você tem que rir disso, mas não tenho certeza do que está errado com o meudateFormatFromTemplate: código. Qualquer ajuda seria apreciada.

Executando o Xcode V 4.5 btw

ATUALIZAR:

Backtrace:

0 CoreFoundation 0x39ff0e55 + 84
1 APPNAME 0x00040be1 - [MeetingsViewController dateAtBeginningOfDayForDate:] + 140

Então eu acho que as coisas estão indo mal na minhadateAtBeginningOfDayForDate método. Que se parece com isso:

/*
 Break down a given NSDate to its bare components for sorting
 */
- (NSDate *)dateAtBeginningOfDayForDate:(NSDate *)inputDate
{
    // Use the user's current calendar and time zone
    NSCalendar *calendar = [NSCalendar currentCalendar];
    NSTimeZone *timeZone = [NSTimeZone systemTimeZone];
    [calendar setTimeZone:timeZone];

    // Selectively convert the date components (year, month, day) of the input date
    NSDateComponents *dateComps = [calendar components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit fromDate:inputDate];

    // Set the time components manually
    [dateComps setHour:0];
    [dateComps setMinute:0];
    [dateComps setSecond:0];

    // Convert back
    NSDate *beginningOfDay = [calendar dateFromComponents:dateComps];
    return beginningOfDay;
}

Eu uso esse método para dividir um determinado NSDate em seus componentes principais para que eu possa classificá-los de forma mais eficiente. No entanto, meu aplicativo tem que ser internacional, que é a razão por trás de usarNSLocale para formatar a saída de data. Pelo que parece, vou precisar alterar meudateAtBeginningOfDayForDate para trabalhar internacionalmente também.

questionAnswers(2)

yourAnswerToTheQuestion