2010-09-11 6 views
1

J'ai une classe Offer (sous-classe NSManagedObject) que je souhaite utiliser pour gérer les offres faites pour les achats. Un côté de chaque offre est un acheteur et l'autre est le produit. Il y a aussi un prix. Cependant, ces instances de classe qui peuvent être des acheteurs ont une lignée assez différente et auront très probablement des classes parentes différentes jusqu'à NSManagedObject. La même chose est vraie pour les produits. Pour cette raison, je ne veux pas créer de classes abstraites "Acheteur" et "Produit" dont ces articles hériteraient. Je préférerais de loin avoir des protocoles «achetables» et «achetables» et demander à des classes d'implanter comment elles sont achetées et comment elles font des achats. Malheureusement, il semble que les relations dans NSManagedObjects ne vous permettent pas de spécifier des classes par leurs protocoles.Relations NSManagedObject ciblant des classes conformes à un protocole

Quelque chose autour de ça? Quelqu'un peut-il me mettre directement? Rob

Répondre

2

Vous ne pouvez pas affecter un protocole car le contexte doit instancier un objet réel et les protocoles ne disent pas au contexte quelle classe instancier. Par exemple. si vous dites au contexte d'insérer un protocole Buyer quelle sous-classe serait réellement créée?

Il semble que vous ayez vraiment besoin de sous-entités. Vous devez créer des entités abstraites pour Buyer et Product puis les associer à Offer. Ensuite, pour chaque variation de Buyer ou Product créer une sous-entité. Les entités n'ont pas besoin d'ajouter de nouvelles propriétés, elles peuvent simplement avoir un nom différent. De cette façon, un objet Offer acceptera n'importe quelle subentité de Buyer dans sa relation buyer et n'importe quelle subentity de Product dans sa relation product.

Affectez ensuite une classe différente à chaque sous-entité pour personnaliser le comportement des entités. L'élément clé ici pour vous est que l'héritage des classes n'a pas à être parallèle de toute façon à l'héritage de l'entité. Votre arbre de classe peut être complètement différent de l'arbre des entités. Tant que la classe individuelle correspond à l'entité individuelle, cela fonctionnera.

Les entités abstraites sont à peu près elles-mêmes des définitions de protocole. Ils définissent l'interface qu'une entité doit avoir mais n'implémentent rien eux-mêmes.

+0

Réponse parfaite, merci. Rob – rob5408

0

Je suis un novice, mais je ne pense pas que ce que vous recherchez est possible.

Questions connexes