У меня есть способ преобразования строки в определенном формате в NSDate
, но она иногда возвращает нуль.Почему NSFormatter dateFromString иногда возвращает нуль?
- (NSDate *)dateFromString:(NSString *)dateAndTime
{
NSDate *date;
NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
[formatter setDateFormat:@"MM/dd/yyyy hh:mm a"];
NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
[formatter setTimeZone:gmt];
date = [formatter dateFromString:dateAndTime];
return date;
}
Это работает большую часть времени из того, что я могу сказать, но есть процент времени, когда он терпит неудачу.
Я некоторое время отслеживал эту ошибку, поэтому есть некоторый код, который заставляет приложение сбой, когда это произойдет. В отчетах о сбоях отображаются значения, которые заставляют метод возвращать нуль.
Например, я получил сообщение о сбоях, в котором сообщается, что «4/14/2015 7:35 PM» возвращен ноль.
Когда я нажимаю то же самое значение для каждой даты, оно работает при запуске приложения в режиме отладки с моего компьютера.
Что может быть здесь? Я не покрываю некоторые случаи для NSDate
s? Почему это не происходит на каждом устройстве?
"4/14/2014" не соответствует "MM/dd/yyyy". «04/14/2014» будет соответствовать. Вам также необходимо установить языковой стандарт «en_US_POSIX». Потребность в этом рассматривается во многих обсуждениях здесь и в документации Apple. – rmaddy
http://stackoverflow.com/questions/6613110/what-is-the-best-way-to-deal-with-the-nsdateformatter-locale-feature –