Managed object context et nib multiples?
berfis
Membre
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?
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?
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
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 ?
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...
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.
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?
Tu dois pouvoir passer le managedObjectContext dès la création du window controller auxiliaire.