Pb avec les dates

muqaddarmuqaddar Administrateur
18:35 modifié dans API AppKit #1
Soit le code suivant :

string = [[[[[NSString stringWithString:[object3 stringValue]] stringByAppendingString:@&quot;-&quot;] stringByAppendingString:[object2 stringValue]] stringByAppendingString:@&quot;-&quot;] stringByAppendingString:[object1 stringValue]];<br />			NSLog(@&quot;string : %@&quot;, string);<br />			date = [NSCalendarDate dateWithString: string calendarFormat:@&quot;%d/%m/%Y&quot; locale:[[NSUserDefaults standardUserDefaults] dictionaryRepresentation]];<br />			NSLog(@&quot;date : %@&quot;, date);


Le premier NSLog me renvoie : string : 2005-7-7
Le deuxième (null).

Autrement dit, dateWithString ne veut pas de cette string pour établir une date.
J'ai cette erreur : Invalid parameter not satisfying: aString != nil

Que lui faut-il comme string. Tout à  l'heure NSDate avalait cette string... (mais je dois la paramétrer)  :why?:

Réponses

  • juillet 2005 modifié #2
    Opération simplification de code:
    [tt]string = [[[NSString stringWithString:[object3 stringValue stringByAppendingString:@-] stringByAppendingString:[object2 stringValue]] stringByAppendingString:@-] stringByAppendingString:[object1 stringValue]][/tt];

    devient:
    [tt]string = [NSString stringWithFormat:@%@-%@-%@",[object3 stringValue],[object2 stringValue],[object1 stringValue]];[/tt]

    Ton calendarFormat n'est pas valide non plus. il faut @%Y-%m-%d, ou alors tu fais:
    [tt]string = [NSString stringWithFormat:@%@/%@/%@",[object1 stringValue],[object2 stringValue],[object3 stringValue]];[/tt]
  • muqaddarmuqaddar Administrateur
    18:35 modifié #3
    Merci pour la simplification du code.
    Le bug venait du format. Justement, je comptais profiter du format pour franciser la date...

    Je vais donc le faire avec descriptionWithLocale ou y a t-il autre chose de mieux ? Histoire de remettre %d %m et %Y dans le bon sens.
    Autre question, pour la localisation, il faudra que je ne touche pas le code, donc comment faire ?

    Pour l'instant, j'ai ma date avec cela :

    date = [NSCalendarDate dateWithString: string calendarFormat:@%Y-%m-%d locale:NSUserDefaults standardUserDefaults] dictionaryRepresentation;

    Que je dois transformer en string localisée avec "description".

  • juillet 2005 modifié #4
    Comme c'est marqué dans la doc, le format sert à  interpréter la description et à  donner le format par défaut pour cette instance. Donc si la string que tu mets ne correspond pas au format que tu mets, ça n'a aucune chance de marcher... Le mieux est de ne faire avaler à  NSDate que des string formattées de manière standard (YYYY-MM-DD) et tu utilises [tt]+dateWithString:[/tt],  et quand tu veux afficher la date, tu utilises les préférences de l'utilisateur. Et tu utilises alors cette méthode:
    [tt]NSUserDefauts* defaults = [NSUserDefaults standardUserDefaults];
    NSLog([date descriptionWithCalendarFormat:[defaults objectForKey:NSShortDateFormatString]
                                       locale:[defaults dictionaryRepresentation]]);[/tt]
  • muqaddarmuqaddar Administrateur
    18:35 modifié #5
    Merci mon p'tit gars.
    C'est parfait.
Connectez-vous ou Inscrivez-vous pour répondre.