NSDictionary

1235789

Réponses

  • schlumschlum Membre
    19:46 modifié #122
    dans 1203950725:

    Re.
    Tu as absolument raison , ma carrière de Programmeur est                          compromise   ...  :)beta:*

    Oui , cela  m'avais traversée l' esprit mais cette énumération étant déjà  présente .
    J' obtiens une longue liste de warnings ... et une erreur pour Total ...
    Il faut bien énumérer  toutes les colonnes . et pour total ?
    Le code .... je nage ..
    Merci
    Cordialement.


    Pour "total", il y a deux possibilités... Soit le sauvegarder, soit le recalculer à  l'init...
    Le second choix est le plus propre.

    Après tous les :
    partie1 = [decoder decodeIntForKey:@&quot;Partie1&quot;];<br />// ...
    

    ->
    total = partie1+...+partie7
    


    Pas bien difficile non plus  :P
  • gogaulegogaule Membre
    19:46 modifié #123
    re
    Lorsque l' on sait ... oui .
    Je sauvegarde une page blanche qui s' ouvre avec TextMate ? . :'(
    Merci
    Cordialement.
  • schlumschlum Membre
    19:46 modifié #124
    Mais tu veux sauvegarder quoi ? Quelque-chose rouvrable avec ton application ou un autre format ? (PDF...)
    Parce que si c'est un autre format, d'une c'est pas rouvrable et de deux c'est tout aussi compliqué que l'impression.
  • gogaulegogaule Membre
    19:46 modifié #125
    Euh ... ben ..
    Je voudrais pouvoir enregistrer le tableau Inscriptions Scores , éventuellement , mais je suppose que cela doit être pareil , après chaque tour . Car si pour une raison X , la fenêtre se ferme , toutes les données seront perdues et si il n'y a pas de liste papier ... =  colossale catastrophe  ....
    Le Concours est perdu .
    Bon il y a toujours la solution de la copie d' écran ..... mais il faudra tout réécrire les données ..

    Tu sais , lors du démarrage de mon idée et de mes post , je ne pensais pas être entraà®né aussi loin ..
    Je pensais créé une sorte de tableau , style tableur de AppleWorks .. et voilà  .
    Le résultat obtenu      est      magnifique  . Mais à  l' impossible nul n'est tenu ...( Impossible pour moi ) .

    Oui ré-ouvrable  avec le logiciel .

    Merci à  toi .
    Cordialement .
  • schlumschlum Membre
    19:46 modifié #126
    Si le résultat est vide, il y a sans doute une erreur dans l'implémentation du protocole.
    Ajoute <NSCoding> derrière l'interface :
    @interface Person : NSObject &lt;NSCoding&gt;
    
  • gogaulegogaule Membre
    19:46 modifié #127
    Re
    Oui je l'ai déjà  fait , j'avais pensé que  ...
  • gogaulegogaule Membre
    19:46 modifié #128
    J'ai une erreur sur le ligne total .
    total = partie1+partie2+    partie8;
  • gogaulegogaule Membre
    19:46 modifié #129
    [Session started at 2008-02-25 19:43:50 +0100.]
    2008-02-25 19:44:43.412 Le Gestionnaire de Concours[22528] Trying to save a document without any appropriate writable type defined.
    2008-02-25 19:44:51.587 Le Gestionnaire de Concours[22528] *** -encodeObject:forKey: only defined for abstract class.  Define -[NSArchiver encodeObject:forKey:]!
  • fouffouf Membre
    19:46 modifié #130
    Attends, tu veux qu'on en fasse quoi de ton log sans code ? On n'est pas des devins.
  • gogaulegogaule Membre
    19:46 modifié #131
    Oui fouf bonsoir .
    C' est surtout à  destination de Schlum .
    - (id)initWithCoder:(NSCoder *)coder
    {
        if (self = [super init]) {
            [self setName:[coder decodeObjectForKey:@Name]];
    partie1 = [coder decodeIntForKey:@Partie1];
    partie2 = [coder decodeIntForKey:@Partie2];
    partie3 = [coder decodeIntForKey:@Partie3];
    partie4 = [coder decodeIntForKey:@Partie4];
    partie5 = [coder decodeIntForKey:@Partie5];
    partie6 = [coder decodeIntForKey:@Partie6];
    partie7 = [coder decodeIntForKey:@Partie7];
    partie8 = [coder decodeIntForKey:@Partie8];
    int total = partie1+partie2+partie3+partie4+partie5+partie6+partie7+partie8;

         
        }
        return self;
    }
    @end

    Voilà   , voilà  .
  • fouffouf Membre
    février 2008 modifié #132
    Bon deux choses :
    1) les deux erreurs ne sont pas les mêmes (cf heure des logs)
    2) si ya une erreur sur encodeObject:forKey: ne nous donne pas le code sur decodeIntForKey:
  • schlumschlum Membre
    19:46 modifié #133
    Moi je vois une 3e chose : "int total = ..."
    En mettant "int" dedans, ça la déclare comme une variable locale, donc ça servira à  rien.
  • gogaulegogaule Membre
    19:46 modifié #134
    Ok
    - (void)encodeWithCoder:(NSCoder *)coder
    {
        [coder encodeObject:name forKey:@Name];
    [coder encodeInt:partie1 forKey:@Partie1];
    [coder encodeInt:partie2 forKey:@Partie2];
    [coder encodeInt:partie3 forKey:@Partie3];
    [coder encodeInt:partie4 forKey:@Partie4];
    [coder encodeInt:partie5 forKey:@Partie5];
    [coder encodeInt:partie6 forKey:@Partie6];
    [coder encodeInt:partie7 forKey:@Partie7];
    [coder encodeInt:partie8 forKey:@Partie8];

    }

    Sans " int total =
    plus de compile .
  • schlumschlum Membre
    19:46 modifié #135
    J'ai pas dit qu'il fallait enlever la ligne... Juste le "int" qu'il y avait devant.

    C'est probablement pas ce code là  qui provoque une erreur de compilation...
  • gogaulegogaule Membre
    19:46 modifié #136
    Oui , juste le " int " , plus de compile .
    J' ai mis les 2 parties de code .
    - (void)encodeWithCoder:(NSCoder *)coder

    - (id)initWithCoder:(NSCoder *)coder

    Cordialement .
  • fouffouf Membre
    19:46 modifié #137
    Ecoute, je voudrais vraiment pas etre méchant avec toi, mais il faudrait vraiment que tu fasses un effort, apprendre les bases du C ou de la programmation en général.
    Si tu veux programmer, il faut que tu saches le faire tout seul, pas que les autres te donnent le code et que tu le copies dans un fichier et enfin que tu compiles.
    Si tu poses des questions telles que les précédentes, je penses tout simplement que tu ne connais la base nécéssaire au développement en Cocoa et en Objective-C en général. Ce n'est pas un honte, on peut apprendre tout ca et franchement, les bases de la programmation (savoir ce qu'est exactement une variable, un objet, une fonction, etc ...), ce n'est pas la mer à  boire. Et puis si tu as une question sur ce quelque chose que tu ne comprends pas, là  on pourra te répondre. Par contre, si tu nous demande du corriger du code que l'on n'a pas sous les yeux, ou bien t'expliquer une notion compliquée qui demande un minimum de prérequis, là  on ne pourra pas.
    Il faut savoir que les choses que tu as lues sur MacFr sont sensés en ce qui concerne l'apprentissage de la programmation, ce sont des conseils de personnes qui ont pas mal d'expérience dans la programmation et qui méritent d'être écoutés.
    Tout ca risque de te prendre du temps, mais il faut savoir se donner les moyens de ses ambitions et là , il faut le dire, tu ne les as pas. Par contre, une fois que tu les auras, tu verras que c'est beaucoup plus marrant de chercher à  résoudre son problème vraiment par soi-même que de se laisser guider un peu à  l'aveugle.
  • gogaulegogaule Membre
    19:46 modifié #138
    Oui .fouf . Je sais tout cela , et je comprend + de jour en jour .
    Je ne suis pas encore prêt  pour la programmation  industriel ....
    Bien , mon logiciel , avec l'aide de schlum , a progressé et est presque opérationnel .
    Ne me laissez pas tomber maintenant .Si je ne parviens pas à  sauvegarder mon tableau = 3 mois de galère inutiles ..
    Les conseils des autres forums , je les ai compris aussi .
    Oui , je suis parti sur de fausses idées .

    Merci
    Cordialement.
  • schlumschlum Membre
    19:46 modifié #139
    Faut pas recopier bêtement ce que je mets aussi ; je viens de jeter un coup d'oe“il aux sources, et y a pas de "total" en fait, il est recalculé à  chaque affichage ; donc ligne inutile  :P
  • schlumschlum Membre
    février 2008 modifié #140
    Ensuite, pour que le menu fonctionne, il faut connecter "Save", "Save As..." et "Revert" à  "First Responder" dans Interface Builder aux actions "saveDocument:" "saveDocumentAs" et "revertDocumentToSaved:"
    Et "open" à  "openDocument:", "new" à  "newDocument:"

    Il faut aussi utiliser NSKeyedArchiver et NSKeyedUnarchiver au lieu de NSArchiver et NSUnarchiver
  • schlumschlum Membre
    février 2008 modifié #141
    Et puis le plus gros problème c'est que ton application n'est pas une application de gestion de documents, donc impossible d'utiliser les méthodes classiques de sauvegarde et ouverture de documents.

    Du coup, il faut implémenter le basic de la sauvegarde pour avoir juste "Open" et "Save as..."

    - (IBAction)save:(id)sender<br />{<br />	NSSavePanel *panel = [NSSavePanel savePanel];<br />	[panel beginSheetForDirectory:@&quot;&quot;<br />							 file:@&quot;&quot;<br />				&nbsp; &nbsp;modalForWindow:[tableView window]<br />					modalDelegate:self<br />				&nbsp; &nbsp;didEndSelector:@selector(savePanelDidEnd:returnCode:contextInfo:)<br />					&nbsp; contextInfo:nil];<br />}<br /><br />- (void)savePanelDidEnd:(NSSavePanel *)sheet returnCode:(int)returnCode&nbsp; contextInfo:(void&nbsp; *)contextInfo<br />{<br />	[[NSKeyedArchiver archivedDataWithRootObject:joueurs] writeToFile:[sheet filename]<br />														&nbsp; &nbsp;atomically:YES];<br />}<br /><br />- (IBAction)open:(id)sender<br />{<br />	NSOpenPanel *panel = [NSOpenPanel openPanel];<br />	[panel beginSheetForDirectory:@&quot;&quot;<br />							 file:@&quot;&quot;<br />				&nbsp; &nbsp;modalForWindow:[tableView window]<br />					modalDelegate:self<br />				&nbsp; &nbsp;didEndSelector:@selector(openPanelDidEnd:returnCode:contextInfo:)<br />					&nbsp; contextInfo:nil];<br />}<br /><br />- (void)openPanelDidEnd:(NSOpenPanel *)sheet returnCode:(int)returnCode&nbsp; contextInfo:(void&nbsp; *)contextInfo<br />{<br />	[joueurs release];<br />	joueurs = [[NSKeyedUnarchiver unarchiveObjectWithFile:[sheet filename]] retain];<br />	[self updateUI];<br />}
    
  • gogaulegogaule Membre
    19:46 modifié #142
    Bonjour Schlum .
    Ou là  là  ....
    Je suis tenté de dire : Si j'avais su .... j'aurais pas venu ...Je Comprends mieux les réponses à  mes premiers post , j' étais +que crédule .
    Je te mets à  contribution  ... dure dure . Nous ne nous connaissons pas et tu me consacre du temps .
    Bon je fait marcher , si je le peut , la sauvegarde .. Et fin ..
    Dois-je mettre le code final sur le site ?
    Merci , merci .
    Faut pas recopier bêtement ce que je mets aussi ; je viens de jeter un coup d'oe“il aux sources, et y a pas de "total" en fait, il est recalculé à  chaque affichage ; donc ligne inutile 

    Mais cette solution ne fonctionne pas .          Et je ne sais rien faire d' autre  :-\\
    Donc je recopie (B......) le code dans perso.m et j' efface tout le reste .
    Merci
    Cordialement.
  • gogaulegogaule Membre
    19:46 modifié #143
    PS: Toutes les connections étaient réalisées .
  • schlumschlum Membre
    19:46 modifié #144
    En fait, tu as fait un projet normal (sans gestion de documents donc), et un contrôleur document donc du coup c'est le bazar...
    Rend le contrôleur normal (NSDocument -> NSObject), enlève tout ce qui concerne les changements ("updateChangeCount"), enlève aussi les fonctions d'enregistrement et de sauvegarde ("dataOfType"...), ajoute les deux miennes, et connecte les à  "Open" et "Save as...", et supprime tout le reste du menu.

    L'autre solution c'est de refaire le projet avec une base de gestion de documents.
  • gogaulegogaule Membre
    19:46 modifié #145
    Re
    Ouuuuuuuuhhhhhhhh
    Refaire le  projet  Ouuuuuuuuhh 
    Je vais essayer de faire le ménage .. pas évidant
    En fait, tu as fait un projet normal (sans gestion de documents donc),
    .
    Mais le départ de mon projet c' est "EmployéAugmentation V4" La gestion est présente non ?

    Merci
    Cordialement .
  • schlumschlum Membre
    19:46 modifié #146
    Oui, dans EmployeAugmentation v4 c'est OK, mais tu n'as pas fait l'interface document dans MyDocument.nib
    Tu l'as fait dans MainMenu.nib qui aurait dû être uniquement l'interface de menu !
  • gogaulegogaule Membre
    19:46 modifié #147
    Oui
    Mais j'ai peut être la réponse :
    Pour conserver certaines fonctions j' ai copier les dossiers du tableau dans un nouveau projet ...
    Non mon idée n'est pas bonne car rien ne fonctionnerait ..
    MyControleur ...? donc se serait cela qui coà®nche ? Comprend pas . MainMenu.nib c'est les fenêtres
    Merci
    Cordialement
  • schlumschlum Membre
    19:46 modifié #148
    Non, dans la gestion de document classique, MainMenu c'est la barre de menu.
    Le document c'est un autre fichier d'interface.

    Regarde comment est fait EmployeeAugmentation, tu verras qu'il y a 2 ressources .nib
  • gogaulegogaule Membre
    19:46 modifié #149
    Oui cela je l'avais remarqué .
    Mais comment remédier à  cela . Je n'ai pas trouvé .
    La fonction de sauvegarde , en fait , je crois qu'elle fonctionne . Elle affiche une icône blanche si le tableau est vide .
    Merci
    Cordialement
  • gogaulegogaule Membre
    19:46 modifié #150
    La solution c'est de recréer un projet SavedDocument ?
  • schlumschlum Membre
    19:46 modifié #151
    Un projet "Document Based"...
    Ne pas oublier aussi que dans un projet de gestion de document, il faut définir le type de documents qu'on gère ! (extension, icône etc...)
Connectez-vous ou Inscrivez-vous pour répondre.