[Résolu] Un coup de main pour un problème de conception MVC...

berfisberfis Membre
mai 2013 modifié dans API AppKit #1

Bonjour, j'ai la tête dans le brouillard de Core Data et vos lumières seraient les bienvenues.

J'ai une entité OBJ qui fait appel à  une entité OBJ dans une relationship. Je rencontre des messages très parlants comme "An error occured." quand je teste mon modèle.

Pour chaque entité OBJ, je peux définir une ou plusieurs actions reliées une autre entité OBJ (y compris elle-même). Je suppose donc que mon erreur provient d'une boucle, mais ce n'est pas sûr.

Dans un premier temps, j'ai défini une relation inverse (comme conseillé par la doc, une relation devrait toujours avoir son inverse) :

ENTITE OBJ
Attributes:
nom
statut
Relationships:
actions <


>>

ENTITE ACTION
Attributes:
nom
Relationships:
obj

Bon, ça ne marche pas. Je découple donc les relations. Action pointe sur un obj et obj pointe sur plusieurs actions, sans réciprocité. Message d'erreur.


Mon idée de base c'est que chacune des actions associées à  un OBJ particulier peut s'exécuter si le statut d'un autre OBJ le permet.


Comment faire, comment constituer un MVC cohérent? L'idée de base me paraà®t simple, c'est sa réalisation qui l'est moins. Est-ce un défaut de modélisation Core Data? Me suis-je planté au niveau des contrôleurs? De l'interface? Je précise qu'à  ce niveau je n'ai pas encore une seule ligne de code.


D'avance merci !
Mots clés:

Réponses

  • J'ai une version qui semble fonctionner, que j'ai obtenue en découplant la relation ACTION <<
    >> OBJET:



    ACTION OBJET

    targetObject <---->> actions

    condObject <---->> condition



    De cette façon, chaque action a son inverse, mais j'ai deux relations différentes (même si l'objet est le même) et je garde le graphe cohérent.



    Ce n'était pas trivial, surtout avec le peu d'information donné par les messages d'erreurs. Quant à  la doc, mieux vaut parler d'autre chose.
  • Peux-tu montrer la doc en question? (sur les "[font=arial, helvetica, sans-serif]relationship")[/font]



    [font=arial, helvetica, sans-serif]Un objet = des instances + des méthodes pour les traiter. J'ai du mal à  te comprendre.[/font]
  • Core Data est un framework qui permet de traiter de manière largement automatique des "classes" appelées Entités, de les instancier, de gérer les relations entre les entités (relationships) et de sauvegarder le graphe complet dans un document. Tout ce que l'on fait "à  la main" d'habitude: créer des sous-classes avec des variables d'instances qui pointent sur d'autres objets, de garder le tout cohérent dans les deux sens, et d'archiver l'ensemble sur fichier, en un mot du gros boulot. J'oubliais, le "Annuler" multiple pour la plupart des opérations. Un cadeau donc, à  condition de ne pas trop s'en mêler.

    La doc:

    https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdRelationships.html
  • Très intéressant! Je ne connaissais pas... image/thumbsup.gif' class='bbc_emoticon' alt='' />
Connectez-vous ou Inscrivez-vous pour répondre.