Managed object context et nib multiples?

Bonjour,



Je tente d'utiliser Core Data et de concilier cela avec des nib multiples. Mais comment faire?



J'ai une fenêtre accessoire pour chaque document, que j'aimerais charger sur demande. Mais comment établir ensuite les connexions avec le Managed Context? Si je déplace le contrôleur/entité dans le fichier nib de ma fenêtre auxiliaire, je perds le contexte, puisque le File Owner devient un NSWindowController...



Ou peut-être n'est-ce pas possible et que j'ai tort de m'arracher les cheveux. J'ai de plus en plus l'impression que Core Data offre beaucoup -- si l'on a pas trop de besoins particuliers.



Des avis?

Réponses

  • CéroceCéroce Membre, Modérateur
    Tu confonds beaucoup Core Data et les bindings.

    Là , c'est un problème de bindings. Si tu n'utilisais pas Core Data, tu aurais exactement le même problème: comment accéder au modèle dans la fenêtre auxiliaire ?



    La solution dépend du type de la fenêtre auxiliaire: est-ce une palette flottante (tu veux faire un inspecteur) ou une fenêtre normale ?
  • Re-bonjour céroce.



    En effet, le problème serait le même. Je prends l'exemple de Core Data parce que mon app est Core Data (j'ai voulu tenter l'aventure mais >ouch< dès qu'on essaie de faire autre chose que "Départements et employés")...



    La fenêtre est de type "panel"; en fait j'aimerais même en faire une "fenêtre-fille" de la fenêtre principale (ça marche... tant que je ne "binde" rien...
  • CéroceCéroce Membre, Modérateur
    juillet 2012 modifié #4
    OK, c'est une fenêtre fille, pas une fenêtre partagée, alors la solution est simple.

    Ajoute une propriété managedObjectContext à  ta sous-classe de NSWindowController qui gère la fenêtre auxiliaire.

    Ainsi, tu pourras binder (les NSArrayController ou NSObjectController) sur [File's Owner].managedObjectContext.



    Ce n'est pas sûr que ça convienne à  ton utilisation, en particulier, si la fenêtre auxiliaire sert à  afficher la sélection courante. Dans ce cas, expose précisément ce que tu souhaites faire dans cette seconde fenêtre.
  • berfisberfis Membre
    juillet 2012 modifié #5
    OK, donc je résume, arrête-moi si je me trompe:



    Je crée une sous-classe de NSWindowController;

    Je lui ajoute une propriété managedObjectContext (reste à  savoir quand et comment elle sera mise à  jour);

    Je fixe la classe du File Owner à  ma sous-classe; du coup la propriété managedObjectContext est exposée et je peux faire les bindings;

    Lorsque l'utilisateur passe la commande "ouvrir la fenêtre fille" je vérifie si le contrôleur est nil, si oui je l'initialise et lui dit de charger le nib;

    Je dis à  la fenêtre du document d'accepter la nouvelle fenêtre comme fille et au contrôleur de l'afficher.



    Ai-je manqué une marche?
  • CéroceCéroce Membre, Modérateur
    Non, t'as tout bon.

    Tu dois pouvoir passer le managedObjectContext dès la création du window controller auxiliaire.
Connectez-vous ou Inscrivez-vous pour répondre.