¿Qué tipo de error sarcástico es este iOS?

Tengo un código que uso para orderar las dates del calendar que se parece a esto:

#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 

Si lo ejecuto en el simulador, todo está bien. Si lo ejecuto en el dispositivo, obtengo este post de debugging sarcástico.

2012-09-19 22: 40: 13.972 APPNAME [4923: 907] * – [__ NSCFCalendar components: fromDate:]: date no puede ser nula

Quiero decir realmente, ¿qué crees que se supone que significa una operación con una date nula?

Una exception se ha evitado por ahora.

Algunos de estos errores se van a reportar con esta queja, luego, otras infracciones simplemente harán todo lo que sea aleatorio de forma nula. Aquí está el backtrace donde esto ocurrió esta vez (algunos frameworks pueden faltar debido a las optimizaciones del comstackdor):

Tienes que reírte de eso, pero no estoy seguro de qué dateFormatFromTemplate: con mi dateFormatFromTemplate: código. Cualquier ayuda sería apreciada.

Ejecutando Xcode V 4.5 btw


ACTUALIZAR:

Backtrace:

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

Entonces, creo que las cosas van mal en mi método dateAtBeginningOfDayForDate . Cuál se parece a esto:

 /* 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; } 

Utilizo este método para desglosar un determinado NSDate en sus componentes centrales para que pueda orderarlos de manera más eficiente. Sin embargo, mi aplicación tiene que ser internacional, que es la razón detrás de usar NSLocale para NSLocale el resultado de la date. Por lo que parece, necesitaré modificar mi dateAtBeginningOfDayForDate de dateAtBeginningOfDayForDate para el dateAtBeginningOfDayForDate la dateAtBeginningOfDayForDate para que funcione internacionalmente también.

El error no ocurre en el código que publicaste. Significa que en algún lugar tienes algo que se supone que es un NSDate y, en cambio, es nil .

En cuanto al humor en el post de error, nunca he visto ese post, pero +1 a Apple. Algún ingeniero en la split de Cacao es tan divertido como los buenos ingenieros antiguos que Apple solía tener hace mucho time.

Echa un vistazo a la class de diagnóstico del comstackdor MPW C de Apple usado para escupir http://www.netfunny.com/rhf/jokes/91q3/cerrors.html

Muchas gracias a nneonneo por ayudarme a resolver esto.

Mi problema es que mi aplicación tiene que funcionar internacionalmente, por lo que necesitaba dates para mostrar con respecto a la location del usuario. Pensé que solo crearía un NSDateFormatter para el entorno local de los usuarios y luego pasaría una date de cadena similar:

  NSString *formatString = [NSDateFormatter dateFormatFromTemplate:@"HH:mm dd MMM yyyy" options:0 locale:[NSLocale currentLocale]]; date = [fmt dateFromString:[NSString stringWithFormat:@"%@ %@", obj.meetingTime, obj.meetingDate]]; 

Sin embargo, el problema es que era la localización el formatting de date antes de pasar en la date de cadena. En mi caso NSDateFormatter veía así después de la localización.

 MMM dd, yyyy, HH:mm 

Lo que el formatting después de la localización podría verse de maneras diferentes después de la localización.

Así que pasar una cadena con un formatting de HH:mm dd MMM yyyy estaba causando que no devuelva nada.

Lo cual es obvio ahora.-

Entonces, en lugar de localizar cuando creo la date, creo las dates con un formatting estándar de HH:mm dd MMM yyyy . Luego, al mostrar, formateo el NSDate a la localidad respectiva del usuario.