Binding entre valeurs

AlfAlfAlfAlf Membre
22:17 modifié dans API AppKit #1
Bonjour,
je débute en objective-C et en binding. Voila ce que je veux faire:
j'ai créé 2 classes
_ "Comptes" qui contient:
_ deux proprietes : "Nom" et "Solde" (sous forme de NSMutableDictionnary),
_ un NSMutableArray "operations" qui est ammené à  recevoir une liste d'operations de la classe "Opérations"

_ "Operations" qui contient:
_ plusieurs proprietes dont celle qui m'interesse maintenant "Montant"

Dans mon application j'ai créé deux tableView une qui reflete la liste des comptes et l'autre celle des operations du compte sélectionné.

Je voudrais binder la valeur de "Solde" de Compte à  la somme des montants des operations du compte, mais je n'y arrive pas, j'ai essayer un truc avec "selection" mais je n'y arrive pas.

Si vous avez des idées pour faire ça ?

Merci d'avance

Réponses

  • VeillardVeillard Membre
    22:17 modifié #2
    Bienvenue AlfAlf parmi les Cocoaistes  ;)

    Pour ton problème, nous avons un docteur spécialisé en bindingologie qui pourra sans doute répondre à  ton problème. 

  • ClicCoolClicCool Membre
    22:17 modifié #3
    Bienvenu à  toi AlfAlf welcome2.gif

    Sans doute les opérateurs sur tableaux (Array Operators) des bindings pourraient ici t'être utiles, et en particulier "@sum"; ;)

    The @sum operator returns the total of adding the NSNumber objects returned by sending valueForKeyPath: to each item in the receiver array, with the key path to the right of the array operator as the parameter. Each number is converted to a double and an NSNumber containing the total sum is returned.
  • AlfAlfAlfAlf Membre
    22:17 modifié #4
    merci, cela répond en partie à  ma question, mais je n'arrive pas à  l'intégrer dans mon code : je voudrais que "Solde" soit mis à  jour automatiquement (ie: en permanence). J'ai essayer plusieurs trucs sans succès : je n'arrive à  voir comment je dois dire en objective-C que
    "Solde = [self valueForKeyPath:@operations.@sum.properties.montant"];"
  • ClicCoolClicCool Membre
    22:17 modifié #5
    Non non c'est pas exactement comme cela qu'il faut les utiliser (les opérateurs sur tableau).

    Tu as su ce site un excellent article ;) te montrant leur usage (@count et @sum en l'occurence. (à  la deuxième page))

    Si tu as besoin de plus de détails n'hésites pas :)
  • AlfAlfAlfAlf Membre
    22:17 modifié #6
    Bonjour a tous,

    apres un petit temps d'absence (boulot oblige) j'ai encore des questions sur les bindings

    Si j'ai bien compris, les bindings sont une façon simple de faire le "lien" entre l'interface (ce qui s'appelle le "view") et les valeurs des classes (le "modele") ? dans ce cas ma question sur binder des valeurs entre-elles n'était pas très pertinente...

    J'arrive bien à  afficher dans un champ de l'interface le solde du compte grace à  @sum, mais je voudrais que la variable "Solde" de la classe "Compte" ait cette valeur.
    Pour faire ce que je veux, il faut plutôt que je fasse appel au "observer" ?
    j'arrive bien à  ajouter un "observer" sur differentes variables, mais la syntaxe

    [self addObserver:self forKeyPath:@operations.@sum.montantSigne" options:(NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld) context:NULL];

    ne marche pas, je ne vois vraiment pas comment faire. (le message d'erreur est "[<NSCFArray 0x340dc0> addObserver:forKeyPath:options:context:] is not supported.  Key path: @sum.montantSigne")

    Si quelqu'un pouvait m'aider : est-ce que c'est possible de faire ça sans trop coder, ou faut-il que je me mette à  écrire plus de code pour faire à  la main le total ?

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