Problème NSArrayController et bindings sous coredata

frOMfrOM Membre
21:32 modifié dans API AppKit #1
Je suis en train de modifier une ancienne application (uniquement sous IB, j'ai perdu le code) et j'ai le problème suivant :

Mon application utilise (entre autres) 4 entity dans la relation maà®tre-esclave.

Parties--(slaves)-->Sections--(slaves)-->Questions--(slaves)-->Réponses.

Tout cela est affiché dans des tableviews et les dépendances marchent parfaitement.

J'essaie d'ajouter une nouvelle tableview qui afficherait toutes les réponses d'une même section : le niveau Questions étant en quelque sorte éliminé.

Sections----(Questions)---->Réponses

J'ai cru naà¯vement qu'il me suffirait de créer un nouvel arrayController dont le contenu serait tous les managedObjects des Questions, et que je pourrais récupérer toutes les réponses par la relationship "slaves". Les réponses devant s'afficher étant dépendantes de la sélection au niveau des sections.

ça ne marche pas.

J'ai essayé toutes sortes de solutions, les problèmes vont de : le document ne peut pas s'afficher, seules une ou deux des tableviews de la hiérarchie se remplissent, la nouvelle affiche seulement : "{(" [ce qui indique, si mes souvenirs sont bons, que le résultat est un NSSet inaffichable.]

Il semble que ce soit le réglage du Controller Key sur "managedObjects" qui ne... plaise pas !

Est-ce seulement faisable ? Si oui, quelle pourrait être la solution ?

Réponses

  • ClicCoolClicCool Membre
    21:32 modifié #2
    dans 1259530985:
    .../... dans la relation maà®tre-esclave..../...


    Honnêtement moi, les relations sado-maso c'est pas trop mon truc.

    Mais as-tu bien bindé ton nouvel arrayController sur le "content set" et non pas le "content Array" ?
  • frOMfrOM Membre
    21:32 modifié #3
    dans 1259532272:

    Mais as-tu bien bindé ton nouvel arrayController sur le "content set" et non pas le "content Array" ?


    Oui, bien sûr. (Hélas!...)
  • NseaProtectorNseaProtector Membre
    21:32 modifié #4
    Si je comprends ta nouvelle tableView doit afficher la sélection des 4 autres tableView ?
    Si c'est le cas je ne crois pas que tu es besoin d'un autre contrôleur.
  • frOMfrOM Membre
    21:32 modifié #5
    dans 1259586470:

    Si je comprends ta nouvelle tableView doit afficher la sélection des 4 autres tableView ?
    Si c'est le cas je ne crois pas que tu es besoin d'un autre contrôleur.


    L'enchaà®nement actuel est : Sections----Questions---->Réponses et je voudrais "sauter" les Questions : Sections---->Réponses.

    Un chemin du genre Sections.slaves.slaves ; mais ça ne marche pas (??).
  • laudemalaudema Membre
    21:32 modifié #6
    dans 1259530985:


    Il semble que ce soit le réglage du Controller Key sur "managedObjects" qui ne... plaise pas !


    Et pour cause, à  moins que tu n'aies défini par toi même "managedObjects" parce que managedObject c'est dans CoreData mais dans les ArrayControllers c'est "arrangedObjects" quand on veut tous les objets d'une entité (selectedObjects ceux qui sont choisis dans l'interface utilisateur).

    m2¢
  • frOMfrOM Membre
    21:32 modifié #7
    dans 1259642963:

    Et pour cause, à  moins que tu n'aies défini par toi même "managedObjects" parce que managedObject c'est dans CoreData mais dans les ArrayControllers c'est "arrangedObjects" quand on veut tous les objets d'une entité (selectedObjects ceux qui sont choisis dans l'interface utilisateur).

    m2¢


    Il faut toujours se relire... je voulais dire "arrangesObjects", bien sûr.
  • ClicCoolClicCool Membre
    21:32 modifié #8
    dans 1259656716:
    .../...
    Il faut toujours se relire... je voulais dire "arrangesObjects", bien sûr.


    se relire en effet  ;D
  • uocramuocram Membre
    21:32 modifié #9
    En bindant le Content Array For Multiple Selection du QuestionsArrayController comme suit : SectionsArrayController.selection.@unionOfSets.relationEntreSectionsEtQuestions

    et en bindant dans le même principe QuestionsArrayController et ReponsesArrayController

    Cela devrait afficher toutes les réponses lorsque tu sélectionnes toutes les sections et il n'y a pas d'arrayController à  rajouter.
  • uocramuocram Membre
    21:32 modifié #10
    Sur l'exemple "bateau" des entreprises, leurs services et leurs employés :

  • ClicCoolClicCool Membre
    21:32 modifié #11
  • frOMfrOM Membre
    21:32 modifié #12
    dans 1259659293:

    dans 1259656716:
    .../...
    Il faut toujours se relire... je voulais dire "arrangesObjects", bien sûr.


    se relire en effet  ;D


    ::)
  • frOMfrOM Membre
    21:32 modifié #13
    dans 1259665848:

    En bindant le Content Array For Multiple Selection du QuestionsArrayController comme suit : SectionsArrayController.selection.@unionOfSets.relationEntreSectionsEtQuestions

    et en bindant dans le même principe QuestionsArrayController et ReponsesArrayController

    Cela devrait afficher toutes les réponses lorsque tu sélectionnes toutes les sections et il n'y a pas d'arrayController à  rajouter.


    Je ne sais pas si c'est tout à  fait ce que je cherche à  obtenir mais @unionOfSets me semble une bonne piste. Je vais voir ce que je peux en tirer.

    PS. Je me suis relu  :fouf):
  • frOMfrOM Membre
    21:32 modifié #14
    ça marche comme expliqué... mais pas comme je le souhaite : il faut faire des multiples sélections.

    Je ne suis pas certain qu'on puisse faire ce que je vise avec un simple contrôleur, le code est sans doute la seule solution.

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