NSDictionary

2456789

Réponses

  • schlumschlum Membre
    17:44 modifié #32
    Il n'est pas question de sélectionner ou effacer un joueur, puisque je ne peux pas en ajouter un déjà ...
    Dans le test d'interface, ça fonctionne (ça met des "(" dans deux champs "partie1" et "partie2"), on peut éditer (sauf "partie1" et "partie2") ; mais quand on compile l'application, plus rien ne fonctionne.

    Attention à  ne pas prendre le test d'interface pour l'application... Pour tester il faut appuyer sur "Build and Go" !
  • gogaulegogaule Membre
    17:44 modifié #33
    schlum.
    Oui, oui .
    Je clic bien sur Build and Go .
    Et tout fonctionne .
    j'ai recréé une archive .Comprend pas .
  • schlumschlum Membre
    17:44 modifié #34
    Même erreur... C'est peut-être Leopard.
    J'essaierai ce soir chez moi avec Tiger.
  • gogaulegogaule Membre
    17:44 modifié #35
    Bizarre ,bigeard .
    J' ai bricater les bindings et une fois sur deux il ne prend pas en compte les réglages , il reste (Xcode) sur les réglages précédents .           
    MON2.1 apparaà®t bien dans la ligne après la pomme .
    Colonne 2 & 3 effacer le code dans holder ...
    Cordialement .Merci .
    ps: J'ai réessayé tout fonctionne , oui , avec  OSX.4.10 ...
  • schlumschlum Membre
    17:44 modifié #36
    Effectivement, sous Tiger ça fonctionne...
    Mais les bindings ne sont vraiment pas faits pour moi ; j'ai l'impression que le KVO est à  moitié bugué, les NSKeyValueObservingOptionNew et NSKeyValueObservingOptionOld ne donnent aucune valeur à  la notification, et je n'arrive pas à  notifier une modification manuelle du NSArrayController
    Je n'arriverai pas à  dompter ces bêtes là , je laisse la main  >:)
  • gogaulegogaule Membre
    17:44 modifié #37
    Bonjour Schlum !
    Vraiment sympa de ta part .
    Merci Beaucoup .
    Je vais continuer a essayer de trouver; mais si toi , tu n'y parviens pas alors.
    Si cela tente d' autres GPB's .
    Merci encore schlum .
    Cordialement .
    PS:Le KVO bugué d' origine ou de mes bricatages ?
  • schlumschlum Membre
    17:44 modifié #38
    J'ai l'impression que dans cette méthode :

    - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
    


    Le clés de "change" NSKeyValueChangeNewKey et NSKeyValueChangeOldKey ne sont jamais définies...
    J'ai lu quelque-part que c'était un bug du KVO qui n'était pas près d'être corrigé ; maintenant, je ne connais pas assez le KVC et le KVO pour pourvoir dire ce que vaut cette information.
  • gogaulegogaule Membre
    17:44 modifié #39
    Re bonjour .
    Oui
    J' ai cru comprendre qu' il fallait ' faire apparaà®tre' les ' clés ' des bindings/colonnes  dans NSArrayControleur Keys
    Je les ai fait apparaà®tre manuellement , ne sachant pas coder , à  la facon dont apparaissent les Outlets et les Actions dans le contrôleur/connections .
    D' ou mon idée de créer un NSMutableDictionary. as-tu suivis cette piste ?
    Cordialement.
  • gogaulegogaule Membre
    17:44 modifié #40
    Re
    Le problème ne viendrait-il pas du fait que NSArrayController étant déjà  paramètre manuellement , il ne peut prendre en compte tes ordres "écrits" ?
    Cordialement.
  • schlumschlum Membre
    17:44 modifié #41
    Non, je n'ai pas utilisé le NSMutableArray et le NSMutableDictionnary apparaissant dans le code ; à  mon avis, ils ne servent à  rien, NSArrayController gère déjà  son propre NSMutableArray.
    Le IBOutlet "controller" pointe sur le NSArrayController ce qui permet de récupérer le NSMutableArray avec "[controller content]"
    Le problème, c'est que quand on modifie ce contenu, le tableau ne se met pas à  jour.
    De plus, je voulais rendre avec le KVO la classe document observatrice de p1, p2, p3, p4, p5, p6 et p7 ; ça fonctionne, mais impossible de savoir précisément quelle ligne a été modifiée ni de quelle manière.
  • schlumschlum Membre
    17:44 modifié #42
    Voilà  pour qu'il fonctionne sous Leopard... Il fallait mettre des affichages par défaut pour les nombres !

    http://cschlum2.free.fr/MON2.1.zip

    Après, je ne connais pas assez les bindings pour pouvoir l'améliorer plus que ça. On doit pouvoir gérer le numéro et le classement de manière automatique (et peut-être même la somme), mais je ne sais pas comment.
  • gogaulegogaule Membre
    17:44 modifié #43
    schlum.
    Merci .
    Super  sympa !
    Cannot find value transformer with name . (Run Log:IB) .Si je traduis bien cela veut dire qu'il n'y as pas de valeur de ce nom à  transformer .?
    Donc comment lui dire que (p1),(p2),(p3) existe .?
    Cordialement.
  • schlumschlum Membre
    17:44 modifié #44
    Je ne sais pas ce que ça veut dire ; je regarderai sur Tiger ce soir...
  • gogaulegogaule Membre
    17:44 modifié #45
    Re
    J'ai écrit un petit morceau de code , suivant un exemple en Java .(Dico) Que vaut-il ?

    Cela ne fonctionne pas (Trop facile ) mais je peut sélectionner un joueur et écrire des valeurs .
    Tout en ajoutant sum et (p1) dans les values transformer ? Alors que sans le texte impossible .

    Merci à  toi
    Cordialement .
  • schlumschlum Membre
    17:44 modifié #46
    Les dernières lignes de Java que j'ai écrites datent du temps de l'école d'ingénieurs pour moi...
    Alors Java-Cocoa...  :crackboom:-
  • gogaulegogaule Membre
    17:44 modifié #47
    Oui schlum
    Je te comprends ..
    [size=6pt]Mais , mais , j' ai été malade .....[/size]
    Si d'autres GPBs veulent m' aider .Non , vraiment personne .
    Merci.
    Cordialement.
  • gogaulegogaule Membre
    17:44 modifié #48
    schlum
    Bonjour .
    Dis -moi sais-tu mettre en oeuvre les exemple donnés par AliGator et Psychoh et Toi .
    Et pourrais- tu détailler ..si pas trop long et compliqué .
    Cela me coûte mais je vais devoir arrêter car je tourne en ovale ... tellement rond .
    Merci et
    Cordialement.
  • schlumschlum Membre
    17:44 modifié #49
    Quels exemples ?
    À mon avis, tu ferais mieux de partir du projet de Cocoa par la pratique dont on trouve les sources ici :
    http://www.editions-eyrolles.com/Livre/9782212112320/cocoa-par-la-pratique

    EmployeAugmentation v9 - Chapitre 22

    Et de l'adapter à  ton cas...
  • gogaulegogaule Membre
    17:44 modifié #50
    Bonsoir .schlum .
    J'espère que je t' emm pas trop.
    Oui c'est ce que j'ai réalisé en premier ..
    Impossible de le faire fonctionner ..... Impossibilité de sélectionner une ligne et d' écrire des données .
    Mes premiers post étaient en rapport avec cela .V3...V5...
    J' ai télé-chargé les dossiers "sources" lors de l' achats du livre .2003  Création de pages perso ,
    avec en + les Cahiers du Programmeurs MACOSX
    Je suis en train de recommencer et essayer de comprendre ou ça bloque .
    La seule façon pour moi d' écrire des données dans un tableau c'est avec des bindings ??? Pourquoi ???
    Aux innocents  .....
    Merci , bonne soirée .
    PS:J' ai horreur de clore une chose sur un échec ...
  • schlumschlum Membre
    17:44 modifié #51
    Je suis sûr qu'en reprenant le tutorial pas à  pas et en adaptant au fur et à  mesure avec ton cas, tu devrais y arriver !
    Ne t'occupe pas de la somme, c'est le genre de chose qui se gère après en 3 lignes de code quand le reste est fait...
  • gogaulegogaule Membre
    17:44 modifié #52
    Bonjour .
    Schlum .
    J' ai recommencé mon essais , une fois de plus .
    Amélioration .
    Le tableau apparaà®t mais reste inactif , seule partie sélectionnable le titre des colonnes .
    Depuis le début je bloque la dessus ...?
    Une erreur , mais ou .?
    Le test interface fonctionne ? .Dois-je pouvoir sélectionner une ligne ?.
    Cordialement.
  • schlumschlum Membre
    17:44 modifié #53
    Envoie les sources...
  • gogaulegogaule Membre
    17:44 modifié #54
    Bonsoir .
    Voilà  impossible de faire tout fonctionner .Désolé .Je suis nul .
    Merci
    Cordialement .
    PS: Si tu trouve , dit moi . 2 mois ... nul de chez nul .
  • schlumschlum Membre
    17:44 modifié #55
    Baon...
    " Dans MyController.m "numberOfRowInTableView" -> "numberOfRowsInTableView" (correspondant au warning)
    " Il faut connecter l'outlet "dataSource" du tableau à  ton contrôleur
    " Après avoir corrigé ces deux choses, tu auras un crash... Normal puisque tu fais créer un joueur dans l'init ce qui envoie une exception qui n'est pas levée puisque pas dans un évènement
    --> Je mets donc en commentaire "[self createNewJoueur];"
    " Maintenant, quand je clique sur "Nouveau joueur", j'ai ce message :

    [<Person 0x170440> valueForUndefinedKey:]: this class is not key value coding-compliant for the key name.
    


    --> Normal encore une fois ; la classe "Person" n'a pas été programmée pour répondre au message "name"
    --> Je change le nom des méthodes "personName" en "name" et "setPersonName" en "setName" (je change aussi dans l'appel de l'init)
    " Nouveau message
    [<Person 0x13e660> valueForUndefinedKey:]: this class is not key value coding-compliant for the key (null).
    

    ça c'est par ce que la colonne "Noms des participants" n'a pas d'identifier ("name" a été mis sur numéro)
    --> Je déplace "name", et je mets "num" sur la colonne numéro
    --> Pour gérer le num, je vais modifier un peu "tableView:objectValueForTableColumn:row:"

    - (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(int)rowIndex<br />{<br />&nbsp; &nbsp; NSString *identifier = [aTableColumn identifier];<br />&nbsp; &nbsp; Person *person = [joueurs objectAtIndex:rowIndex];<br />	if([identifier isEqualToString:@&quot;num&quot;])<br />		return [NSNumber numberWithInt:rowIndex];<br />	else<br />		return [person valueForKey:identifier];<br />}
    

    " Nouveau message
    [&lt;Person 0x16d6f0&gt; valueForUndefinedKey:]: this class is not key value coding-compliant for the key partie1.
    

    --> Normal, j'ai pas défini les fonctions "partie1" et "setPartie1" dans Person ; j'ai d'ailleurs rien pour le gérer dedans
    --> J'ajoute dans "Person" partie1 et les getters/setters qui vont avec (je le fais juste pour "partie1", c'est pareil pour tous les autres !)
    @interface Person : NSObject&nbsp; {<br />&nbsp; &nbsp; NSString *personName;<br />	int partie1;<br />}<br /><br />- (NSString *)name;<br />- (void)setName:(NSString *)s;<br />- (int)partie1;<br />- (void)setPartie1:(int)n;<br /><br />@end
    


    - (id)init<br />{<br />&nbsp; &nbsp; if (self = [super init]) {<br />&nbsp; &nbsp; &nbsp; &nbsp; [self setName:@&quot;New joueur&quot;];<br />		partie1 = 0;<br />&nbsp; &nbsp; }<br />&nbsp; &nbsp; return self;<br />}<br /><br />// ...<br /><br />- (int)partie1<br />{<br />	return partie1;<br />}<br /><br />- (void)setPartie1:(int)n<br />{<br />	partie1 = n;<br />}
    


    " Ensuite, il gueule pour "total"... Là  on va faire quelque-chose de très simple :
    - (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(int)rowIndex<br />{<br />&nbsp; &nbsp; NSString *identifier = [aTableColumn identifier];<br />&nbsp; &nbsp; Person *person = [joueurs objectAtIndex:rowIndex];<br />	if([identifier isEqualToString:@&quot;num&quot;])<br />		return [NSNumber numberWithInt:rowIndex];<br />	else if([identifier isEqualToString:@&quot;total&quot;])<br />		return [NSNumber numberWithInt:[person partie1]+[person partie2]+[person partie3]+[person partie4]+[person partie5]+[person partie6]+[person partie7]+[person partie8]];<br />	else<br />		return [person valueForKey:identifier];<br />}
    


    --> Voilà , ça fonctionne ; je te laisse continuer !
  • schlumschlum Membre
    17:44 modifié #56
    À noter que pour le num, c'est temporaire ; il faudra le gérer dans Person si tu veux faire des tris après.
  • gogaulegogaule Membre
    17:44 modifié #57
    OUI , oui , Merci
    Schlum .
    Il m' était impossible de coder cela seul .Surtout de déduire pourquoi les warnings .. Merci .Je me sent petit petit
    et tellement con .
    Cordialement.
  • gogaulegogaule Membre
    17:44 modifié #58
    Bonsoir , re .
    schlum .
    Bon j'ai essayé de suivre tes explications
    10 erreurs ....
    1) le commentaire ? [self createNewJoueur ] écrit ou . ?
    2) je doit répliquer 8 fois chaque méthodes ?
    3) il ne connaà®t pas n .
    Merci
    Cordialement .
  • schlumschlum Membre
    17:44 modifié #59
    Le mieux pour nous deux, je pense, ça va être de faire comme ça...

    http://cschlum2.free.fr/Nouveau.zip

    Mais attention, je veux que tu regardes attentivement et que tu compares avec ce que tu as pour voir où tu avais fait des erreurs !
  • gogaulegogaule Membre
    17:44 modifié #60
    schlum
    Merci  .....merci
    Je risque de passer plusieurs jours à  trouver mes erreurs .
    Seul de toutes les façons , je n'y serais pas arrivé .
    Merci[size=18pt]Merci[/size]
    Cordialement.
    PS si tu me le permets je te tiendrai au courant .
    Je ne pensais pas cela aussi difficile . Mes machines à  commandes numériques .. rigolade .
  • gogaulegogaule Membre
    17:44 modifié #61
    Bonsoir re
    Schlum ,
    Tu as tout réécrit la classe Person .
    Score à  la place de n OK pourquoi ? et comment il passe ? dans ta première explication il manquait une parenthèse avant else . J' avais Controller  et  Controleur .
    Tu as trouvé une bibliothèque Apple ?
    Tu as passé du temps ..comment te remercier ?
    Encore Merci .
    Ce petit utilitaire pour les concours de Belote, de Pétanque . Je vais pouvoir faire le plus facile .
    Bonsoir .
    Cordialement .
Connectez-vous ou Inscrivez-vous pour répondre.