Mon application, une application Core Data basée sur un document, passe par une seconde itération et nécessite maintenant plusieurs fenêtres pour gérer plusieurs objets de modèle. Actuellement, il gère les événements et les emplacements à travers une fenêtre et un contrôleur. La classe de document générée standard agit en tant que contrôleur pour la fenêtre principale pour le moment.Quelle est la meilleure approche pour une application Cocoa basée sur un document multi-fenêtres?
Je veux maintenant une fenêtre séparée pour la gestion des objets du modèle Emplacements. Il semble bon d'avoir un contrôleur séparé (NSWindowController) pour chaque fenêtre, mais j'ai ensuite réalisé que ces contrôleurs n'auront pas accès au contexte d'objet géré, qui est requis pour accéder aux objets du modèle.
Quelle est la meilleure approche ici?
EDIT:
J'ai suivi solution ughoavgfhw comme suit:
- créé un nouveau XIB pour les emplacements et a ajouté un contrôleur de réseau pour charger des objets Emplacement
- créé un contrôleur personnalisé
ManageLocationsController
comme une sous-classeNSWindowController
- Fait le contrôleur personnalisé le propriétaire du fichier dans les emplacements XIB
- cartographiés Array contexte du contrôleur de fichier propriétaire et KeyPath document.managedObjectContext
J'ouvre la fenêtre Localisation avec:
ManageLocationsController *aController = [[ManageLocationsController alloc] initWithWindowNibName:@"ManageLocations"];
[aController showWindow: self];
Cela se fait à partir EventDocument, qui est la classe par défaut générée par XCode. Lors du mappage du contrôleur de matrice, il restait un point d'exclamation noir dans le champ keyPath et lorsque j'ouvrais la fenêtre Emplacement, il lançait une exception disant "impossible d'exécuter une opération sans objet géré". De toute évidence pas bon. Qu'est-ce que je rate?
Un grand merci. J'ai édité les questions avec les résultats selon votre réponse. – Roger
@Roger Désolé, j'ai oublié d'ajouter des détails sur l'utilisation de contrôleurs de fenêtre personnalisés avec NSDocument. Je vais ajouter ça maintenant. – ughoavgfhw
Merci pour cela. Cela a aidé bien que maintenant je reçois "cette classe n'est pas la valeur clé codage-conforme pour les exceptions clés managedObjectController". Je soupçonne que cela a à voir avec la méthode keyPathsForValuesAffectingManagedObjectContext. Dois-je implémenter cette méthode dans ma classe de contrôleur personnalisé? – Roger