2010-07-16 5 views
0

Cela fonctionnait correctement avant la compilation avec iOS4.0 et je ne peux pas comprendre ce qui ne va pas.Valeur NULL de NSDateFormatter de XML

Voici le problème. J'envoie mes scores d'applications de ma base de données avec une date/heure dessus. Mon but est de stocker cela dans CoreData. Quand j'utilise le code ci-dessous, j'obtiens une valeur nulle pour la date.

code:

 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];

Voici le résultat dans le débogueur:

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) 

Toute aide est appréciée! Merci.

Répondre

2

Je trouve la question. Il semble que la partie ZZZ de la formation plus longtemps accepte le colon : dans le temps.

Travaux: 07/16/2010 04:21:00 +0000

ne fonctionne pas: 07/16/2010 04:21:00 +00:00

Pour soutenir les applications actuelles qui sont là, tout ce que je ne faisais que la recherche de la +00:00 partie dans la chaîne et le remplacer par +0000. TADA! Ça marche!

0

NSDateFormatter est devenu très difficile dans iOS4. This other SO question avait le même problème et a quelques solutions différentes.

0

J'ai eu le même problème. Pour moi, le problème était que j'avais un saut de ligne dans mon flux XML pour la date, de sorte que ce code fixe pour moi:

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