NSDate problème initialiseur sur l'iPhone
-
21-09-2019 - |
Question
Je suis en train de faire quelques opérations de base avec des dates sur l'iPhone. Je veux prendre une chaîne comme « 2010-02-19 » et la transformer en une chaîne comme « vendredi, février 19. » Les chaînes que je vais recevoir seront toujours en 2010-02-19. En ce moment, je courais le code suivant qui fonctionne, mais il produit un avertissement qui dit « NSDate ne peut pas répondre à + dateWithNaturalLanguageString: »
NSDate *date = [NSDate dateWithNaturalLanguageString:scheduled];
NSDateFormatter *df = [[[NSDateFormatter alloc] init] autorelease];
[df setDateFormat:@"EEEE, MMM dd"];
return [df stringFromDate:date];
Le code fonctionne, mais il produit cet avertissement. Dois-je craindre, ou est-ce OK sur l'iPhone. Y at-il une autre initialiseur NSDate que je devrais utiliser?
La solution
+dateWithNaturalLanguageString
semble être disponible uniquement sur le Mac: NSDate Référence de la classe Mac Dev Center vs NSDate référence de la classe iPhone Centre Dev
En outre, la documentation indique que:
Il peut donner des résultats inattendus, et son utilisation est fortement déconseillée
Dans la section aperçu de la référence de classe, vous pouvez trouver les informations suivantes:
NSDate propose plusieurs méthodes pour interpréter et de créer la chaîne représentations de dates (par exemple, dateWithNaturalLanguageString: locale: et descriptionWithLocale :). Dans général, sous Mac OS X v10.4 et plus tard vous devez utiliser une instance de NSDateFormatter pour analyser et générer chaînes en utilisant les méthodes dateFromString: et stringFromDate: -voir NSDateFormatter sur Mac OS X 10.4 pour plus de détails.
Étant donné que ce n'est officiellement disponible sur le Mac, mais pas sur l'iPhone, je ne l'utiliser dans un projet iPhone. Même sur le Mac, il semble que Apple recommande l'utilisation d'un NSDateFormatter
à la place.