NSString et plusieurs messages

clampinclampin Membre
21:18 modifié dans API AppKit #1
Bonjour

Je reviens encore à  la charge avec mes trucs de débutant...... et je pense que j'avance mais très lentement... (quoique là  j'ai l'impression de reculer) bon bref...

Je me suis créé une petit application qui calcule un prêt à  taux fixe (rien de bien méchant me dis-je)....

Alors donc j'ai créé cocoa-application... avec dans la fenêtre 3 champs éditables et un grand champ ou seront inscrit les résultats. Voici ce à  quoi elle doit arriver :

Emprunts.png

mais j'ai un problème avec l'affichage des résultats

<br />- (IBAction)calcAction:(id)sender<br />{<br />	float principal, rate, payement, affrate;<br />	int term;<br />	<br />	principal = [empruntFld floatValue];<br />	rate = [pourcentageFld floatValue];<br />	affrate = rate;<br />	<br />	/* ajustement du pourcentage */<br />	rate /= 100;<br />	/*calcul du taux d&#39;intérêt mensuel */<br />	rate /= 12;<br />	<br />	term = [moiFld intValue];<br />	<br />	payement = (principal * rate) / (1 - pow((1 + rate), -term));<br />	<br />	NSString *message = [[NSString alloc] initWithFormat:@&quot;Résumé de vos données&#092;n&#092;n&quot;];<br />	<br />	<br />	/*<br />	NSString *message2 = [[NSString alloc] initWithFormat:@&quot;&#092;nLe montant à  enprunter :&#092;t%.2f euros&#092;nLe taux de l&#39;emprunt :&#092;t%.2f %%&#092;nLe nombre de mois :&#092;t&#092;t%d&#092;nVos mensualités :&#092;t&#092;t%.2f euros. &#092;n&#092;nTotal à  payer :&#092;t&#092;t&#092;t%.2f euros&#092;n&quot;,<br />		principal, affrate, term, payement, payement*term];<br />	 <br />	*/<br /><br />	NSString *message2 = [[NSString alloc] initWithFormat:@&quot;&#092;nLe montant à  enprunter :&#092;t%.2f euros&#092;n&quot;, principal];<br />	<br />	NSString *message3 = [[NSString alloc] initWithFormat:@&quot;&#092;nLe taux de l&#39;emprunt :&#092;t%.2f&quot;, affrate];<br />	<br />	NSString *message4 = [[NSString alloc] initWihtFormat:@&quot;&#092;nLe nombre de mois :&#092;t&#092;t%d&#092;n&quot;, term];<br />	<br />	NSString *message5 = [[NSString alloc] initWithFormat:@&quot;&#092;nVos Mensualités :&#092;t&#092;t%.2f euros&#092;n&quot;, payement];<br />	<br />	NSString *message6 = [[NSString alloc] initWithFormat:@&quot;&#092;nTotal a payer:&#092;t&#092;t&#092;t%.2f euros&quot;, payement*term];<br />	<br />	<br />	/*<br />	 [EmpruntResultFld setString:[NSString stringWithFormat:@&quot;%@%@&quot;,message,message2]]; */<br />	 <br />	<br />	<br />	[EmpruntResultFld setString:[NSString stringWithFormat:@&quot;%@%@%@%@%@%@&quot;,message,message2,message3,message4,message5,message6]];<br />	<br />	 <br />	&nbsp; <br />	[message2 release];<br />	<br />	[message release];<br />	<br />}<br />



j'avoue ne pas trop comprendre pourquoi j'ai ce message :

2007-09-09 08:41:42.148 CocoaEmprunts[29445] *** -[NSPlaceholderString initWihtFormat:]: selector not recognized [self = 0x314fa0]
2007-09-09 08:41:42.160 CocoaEmprunts[29445] *** -[NSPlaceholderString initWihtFormat:]: selector not recognized [self = 0x314fa0]

Voilà ... ou ais-je fais une faute dans mes NSString messageX ?

(je ne sais pas si je me suis bien exprimé)....


Réponses

  • Philippe49Philippe49 Membre
    21:18 modifié #2


    initWihtFormat
  • UniXUniX Membre
    21:18 modifié #3
    :) :) :)
    Le genre de truc ou tu passes des heures à  chercher une erreur compliquée ..... Et quand tu découvres ce que c'est, tu rigoles et tu penses à  tout ce temps perdu !

    Combien de fois ça m'est arrivé ....
  • Philippe49Philippe49 Membre
    septembre 2007 modifié #4
    dans 1189347621:

    :) :) :)
    Le genre de truc ou tu passes des heures à  chercher une erreur compliquée ..... Et quand tu découvres ce que c'est, tu rigoles et tu penses à  tout ce temps perdu !

    Combien de fois ça m'est arrivé ....


    et moi donc ...

    au passage on voit un truc NSPlaceholderString, et on voit un peu sous les jupes de Cocoa :
    il est clair qu'ils ne sont pas avares en classes et sous-classes à  Cupertino :

    // Framework:     Foundation
    // Header:       Unknown
    // Documentation: Unknown

    @interface NSPlaceholderString : NSString
    {
    }

    - (id) autorelease;
    - (unsigned short) characterAtIndex: (unsigned int) parameter1;
    - (void) dealloc;
    - (void) finalize;
    - (id) init;
    - (id) initWithBytes: (void*) parameter1 length: (unsigned int) parameter2 encoding: (unsigned int) parameter3;
    - (id) initWithBytesNoCopy: (void*) parameter1 length: (unsigned int) parameter2 encoding: (unsigned int) parameter3 freeWhenDone: (char) parameter4;
    - (id) initWithCString: (char*) parameter1;
    - (id) initWithCString: (char*) parameter1 encoding: (unsigned int) parameter2;
    - (id) initWithCString: (char*) parameter1 length: (unsigned int) parameter2;
    - (id) initWithCStringNoCopy: (char*) parameter1 length: (unsigned int) parameter2 freeWhenDone: (char) parameter3;
    - (id) initWithCharacters: (unsigned short*) parameter1 length: (unsigned int) parameter2;
    - (id) initWithCharactersNoCopy: (unsigned short*) parameter1 length: (unsigned int) parameter2 freeWhenDone: (char) parameter3;
    - (id) initWithData: (id) parameter1 encoding: (unsigned int) parameter2;
    - (id) initWithFormat: (id) parameter1 locale: (id) parameter2 arguments: (char*) parameter3;
    - (id) initWithString: (id) parameter1;
    - (unsigned int) length;
    - (void) release;
    - (id) retain;
    - (unsigned int) retainCount;

    @end



    d'ailleurs quelqu'un connaà®t-il une bonne traduction pour placeholder que l'on voit traà®ner un peu partout ?
  • AliGatorAliGator Membre, Modérateur
    21:18 modifié #5
    Emplacement dédié/prévu ?

    C'est clair que c'est pas le plus simple à  traduire, c'est pour ça que beaucoup de termes en programmation gardent leur nom en VO :)
  • Philippe49Philippe49 Membre
    septembre 2007 modifié #6
    Le dico dit

    a missing quantity or operator

    dans les bindings, c'est souvent ce qu'il faut mettre ou faire si on ne peut pas atteindre l'info ...
  • clampinclampin Membre
    21:18 modifié #7
    dans 1189333344:



    initWihtFormat



    Ah wéééééé..... merci......... j'avoue que je sèche depuis hier soir... je m'étais dit que c'était la fatigue et que ce matin je trouverai rapidement.. faut croire que ce matin j'étais pas bien réveillé  non plus....

    Je pensais avoir utilisé l'auto-complétion (je ne sais pas si ça se dit comme ça) de XCode, mais visiblement non... en tout cas... merci encore, parfois le regard externe aide bien... je suis conscient que mon code est merdique....

    A bientôt....
  • psychoh13psychoh13 Mothership Developer Membre
    21:18 modifié #8
    dans 1189348017:

    et moi donc ...

    au passage on voit un truc NSPlaceholderString, et on voit un peu sous les jupes de Cocoa :
    il est clair qu'ils ne sont pas avares en classes et sous-classes à  Cupertino :


    Les class clusters existent depuis NeXTStep, Apple n'a fait que reprendre ce système lorsqu'elle a racheté la license. Et puis, le fait de créer des class clusters permet de répartir l'implémentation dans plusieurs code pour bien les compartimenter.
    On a la classe abstraite publique : NSString (et sa fille NSMutableString) ici, qui contient toute l'interface permettant de manipuler les NSString, juste en-dessous une classe placeholder qui contient l'implémentation pour initialiser les NSString et les rendre utilisables, ce qui fait que lorsque NSString alloue un objet elle retourne un objet de type NSPlaceholderString qui est unique à  chaque zone (s'il existe déjà  il est retourné, sinon il est créé et retourné).
    Puis NSPlaceholderString alloue un nouvel objet dans la même zone que lui (c'est pour ça qu'il y a un placeholder par zone pour savoir où allouer le nouvel objet) en choisissant la classe appropriée. Dans le cas d'un NSNumber, le NSPlaceholderNumber peut allouer un objet de la classe NSUnsignedInt quand on appelle la méthode -initWithUnsigned:, ou un objet de NSFloat si on appelle -initWithFloat:, etc. (dans les faits ça ne marche pas comme ça dans l'implémentation Cocoa, mais dans GNUStep c'est comme ça).
    Et donc ce système permet d'avoir une interface simple et commune avec une seule classe et en-dessous une implémentation complexe avec beaucoup de classes. :D

    dans 1189348017:
    d'ailleurs quelqu'un connaà®t-il une bonne traduction pour placeholder que l'on voit traà®ner un peu partout ?


    Oui on pourrait dire "emplacement dédié" comme dit AliGator.
  • Philippe49Philippe49 Membre
    21:18 modifié #9
    dans 1190115473:

    Les class clusters existent
    ...
    en-dessous une implémentation complexe avec beaucoup de classes. :D

    Merci pour ces précisions, et pour leur clarté

    dans 1190115473:

    Oui on pourrait dire "emplacement dédié" comme dit AliGator.


    Là , par contre, j'ai du mal à  adhérer. 
    Je vois plutôt l'idée de susbtitutif : qui se substitue à  un objet qui n'existe pas, ou qui existe incomplètement .

    On a en Français une expression qui ressemble : "à  la place de"
Connectez-vous ou Inscrivez-vous pour répondre.