Bondings toujours...

olofolof Membre
18:21 modifié dans API AppKit #1
Salut !

Je peine toujours avec les bindings. J'ai toujours mon appli de gestion de cave à  vin. Un objet FGCave, qui contient un attribut nbBouteillesRestantes et un autre attribut vins qui est une array d'objets FGVin. Un objet FGVin contient, entre autres, nbBouteilles.

Ma fenêtre principale se compose d'un NSTextField qui affiche le nombre de bouteilles de la cave et d'une NSTableView avec les vins. Pour ajouter un vin, je créé une nouvelle instante de FGVin que j'ajoute manuellement dans ma cave. Je mets à  jour ma table je sélectionne mon objet fraà®chement ajouté et j'ouvre une sheet pour la saise des attributs de mon vin. Mon problème est que je ne sais pas comment mettre à  jour automatiquement l'affichage du nombre de bouteilles restantes de ma cave (qui est un attribut de ma classe FGCave) à  la création d'un nouveau vin.

Merci !

Réponses

  • olofolof Membre
    18:21 modifié #2
    En fait, ma question est plutôt la suivante.

    Quand j'ajoute un vin, je saisis un nombre de bouteilles. Ce nombre de bouteilles va bien entendu influer le nombre de bouteilles de ma cave. Il faut donc que je recalcule le nombre de bouteilles total lorsque le nombre de bouteilles de mon vin change. Quand ce nombre change, la méthode setNbBouteilles de ma classe FGVin est appelée. C'est bien beau, mais c'est plutôt au niveau de la cave que je devrais faire ce calcul. Et je n'ai pas de lien entre tous mes vins et ma cave, mais seulement l'inverse.

    Une idée (si je suis assez clair...) ?
  • laurrislaurris Membre
    18:21 modifié #3
    Je n'ai pas regardé ton code mais à  mon avis: plutôt que de se demander comment faire la mise à  jour des propriétés du modèle, il vaut mieux essayer d'avoir un modèle tel que les propriétés se mettent à  jour toutes seules.

    Par exemple, si bouteille est une propriété de vin qui est une propriété de cave, on peut accéder au nbre total de bouteilles avec un keyPath du genre "caves.vins.bouteilles.@count";.

    - Si cette valeur est affichée avec un binding doté des bonnes options, elle devrait se mettre à  jour quand le nbre de bouteilles ou de vins change.

    -Si la somme est calculée avec un accesseur et du code, là  il faut dire à  l'instance de maj cette variable grâce à  une methode spéciale (dont je retrouverai le nom exact sur demande).

  • olofolof Membre
    18:21 modifié #4
    Ok, c'est ce que je pensais. Dans mon cas, passer par les accesseurs n'est pas possible. J'appelle donc "manuellement" les méthodes de recalculation du nombre de bouteilles restantes et du prix quand il faut.

    Merci
Connectez-vous ou Inscrivez-vous pour répondre.