Значение NULL из NSDateFormatter из XML

Это работало нормально до компиляции с iOS4.0, и я не могу понять, что не так.

Вот в чем проблема. Я отправляю результаты своего приложения из своей базы данных с указанием даты и времени. Моя цель - сохранить это в CoreData. Когда я использую приведенный ниже код, я получаю нулевое значение для даты.

Код:

     NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
        NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"US"];
        [dateFormatter setLocale:locale];
        [dateFormatter setDateFormat:@"MM/dd/yyyy HH:mm:ss ZZZ"];
        currentDownloadedScore.dateEntered = [dateFormatter dateFromString:self.currentValue];
        NSLog(@"Date CV: %@",self.currentValue);
        NSLog(@"Date: %@",[currentDownloadedScore.dateEntered description]);
        [locale release];
        [dateFormatter release];

Вот результат в отладчике:

2010-07-16 08:15:35.741 MyApp[75003:207] Date CV: 07/16/2010 04:21:00 +00:00
2010-07-16 08:15:35.742 MyApp[75003:207] Date: (null)
2010-07-16 08:15:35.745 MyApp[75003:207] Date CV: 07/16/2010 01:09:26 +00:00
2010-07-16 08:15:35.749 MyApp[75003:207] Date: (null)

Любая помощь приветствуется! Спасибо.


person RoLYroLLs    schedule 16.07.2010    source источник


Ответы (3)


Я нашел проблему. Кажется, что ZZZ часть форматирования НИКОГДА не принимает двоеточие : во времени.

Работает: 07/16/2010 04:21:00 +0000

Не работает: 07/16/2010 04:21:00 +00:00

Чтобы поддержать текущие отсутствующие приложения, все, что я сделал, это поискал часть +00:00 в строке и заменил ее на +0000. ТАДА! Оно работает!

person RoLYroLLs    schedule 21.07.2010

NSDateFormatter стал очень разборчивым в iOS4. Этот другой вопрос SO имел ту же проблему и имеет несколько разных решений .

person John Franklin    schedule 16.07.2010

У меня такая же проблема. Для меня проблема заключалась в том, что в моем XML-фиде для даты был разрыв строки, поэтому этот код исправил это для меня:

[currentDate replaceOccurrencesOfString:@"\n" withString:@"" options:NSCaseInsensitiveSearch range:NSMakeRange(0,[currentDate length])];

person scottsanders    schedule 17.07.2010