2010-08-04 9 views
1

Je suis en train de mettre en œuvre le modèle de stratégie à l'aide des données de base et C. ObjectifCoreData: Stratégie modèle mise en œuvre

Pour simplifier, je l'ai, disons, une entité Text multilingue, qui a plusieurs attributs, comme un Date pour la dernière sauvegarde, et un NSSString pour l'auteur etc. etc. Je veux ajouter une référence à une entité Language, qui pourrait être l'une de plusieurs sous-classes, telles que French, Italian et ainsi de suite, en tenant un NSString du texte dans la langue de la nom du cours. Chacune des sous-classes Language peut implémenter ses propres méthodes translateTo et translateFrom et l'instance Text n'a pas besoin de s'inquiéter à ce sujet. Modèle de stratégie simple.

Created by yuml.me http://yuml.me/1caedd69

Je suis vraiment du mal à mettre en place ce genre de relation avec Core Data, où une certaine entité Text peut être mis en place avec sa propre Language mise en œuvre en fonction des détails de l'instance. Je suppose en un mot, ce que j'essaie de faire est de créer une relation "has-a", où l'entité à l'intérieur de l'entité Text peut être l'un des sous-types de Language.

Core Data est tout à fait nouveau pour moi, donc si je manque complètement le point ici, ou si j'ai manqué quelque chose d'évident, faites le moi savoir.

+0

btw: qu'avez-vous utilisé pour dessiner votre modèle? comme le "sketchy" sentir – falconcreek

+0

J'ai utilisé http://yuml.me/diagram/scruffy/class/draw - Just googled pour cela pour ce problème - semble assez agréable –

Répondre

3

Vous pouvez avoir des entités abstraites. Je créerais une entité abstraite du langage, une relation directe entre le texte et le langage, et des sous-entités concrètes du langage appelé italien, français etc. Exemple avec l'éditeur Xcode: The Xcode editor showing a diagram much like the one in the original question http://files.droplr.com.s3.amazonaws.com/files/762938/1u3s2W.Screen%20shot%202010-08-05%20at%2010%3A50%3A57.png

Vous devez alors définir la relation .language de votre texte avec un nouveau NSManagedObject italien ou français au besoin.

+0

Soyez conscient d'un problème de performance potentiel avec ce concept. Chaque entité qui est une sous-entité sera placée dans une seule table. Par conséquent, dans cet exemple, l'italien et le français vivraient réellement dans la même table et créeraient potentiellement beaucoup d'espace vide. –

+0

Merci - il s'avère que ce qui me manquait était la désignation du parent sur l'entité. Ne semble pas si évident comment faire cela dans la nouvelle version de Xcode - retour sur Xcode 3 et tout est bon. Merci encore. –