Question

Je crée une application qui a une interface maître-détail, similaire à iTunes. Il a la même hiérarchie de données que les playlists iTunes (sauf que je ne suis pas permettre aux groupes de « listes de lecture » pour garder les choses simples). En d'autres termes, il y a des listes de lecture normales où leurs seuls éléments sont ajoutés manuellement par l'utilisateur. Il y a des listes de lecture intelligentes, qui montrent tous les éléments qui correspondent à un prédicat défini par l'utilisateur. Enfin, il y a quelques « listes de lecture » qui ne sont pas modifiables du tout par l'utilisateur (je l'appelle ces DefaultFolders), mais ne sont en essence plus de fantaisie listes de lecture intelligentes en ce que leur prédicat est de montrer tout. Ce sont comme la « Bibliothèque » et les sections « Films » dans iTunes.

Dans ma tentative de recréer cette structure, je suis venu avec la hiérarchie suivante (en Core Data): http://gallery.me.com/davedelong#100084/Screen%20shot%202009-11-07%20at%207.17. 53% 20 pM & bgcolor = noir (espérons il va de soi)

Cependant, comme je l'ai obtenu plus loin dans cette application, cette structure est devenue un peu lourde. Par exemple, je définissais un accesseur sur la classe AbstractFolder appelé -(NSSet *)items, de sorte que tous les types de dossiers concrets (DefaultFolder, SmartFolder et Folder) peuvent facilement récupérer leur contenu. Cela coïncide avec la relation que l'entité de dossier a avec l'entité Item. Cependant, je ne peux pas mettre en œuvre l'accesseur items dans AbstractFolder, parce que l'emporterait sur l'accesseur généré fournies par les données de base pour l'entité Folder. J'ai pensé à ce qui en fait partie d'un protocole que tous les dossiers concrets mettraient en œuvre, mais qui semble vaincre le but de l'héritage.

Alors j'ouvre ce à la sagesse collective de la liste de diffusion. Y at-il une meilleure façon que je pourrais modéliser cette structure? L'un de vous travaillé sur des applications avec des structures similaires? Qu'avez-vous trouvé utile?

Était-ce utile?

La solution 2

Je suis venu avec une structure, qui détaillent I dans cette réponse: https://stackoverflow.com/questions/1812311 # 1812924

Autres conseils

Désolé, je ne l'ai pas utilisé les données de base beaucoup, mais ce n'est pas clair pour moi pourquoi vous avez besoin de mettre en œuvre l'accesseur articles en AbstractFolder? Tu ne peux pas rester juste dans une catégorie dans l'en-tête et pas la peine de le mettre en œuvre? Telle est l'approche standard pour les méthodes abstraites.

Par exemple, dans AbstractFolder.h, vous auriez:

@interface AbstractFolder (Abstract)

NSSet *items;

@end

et vous ne prenez pas la peine de mettre en œuvre partout, qui forcera la mise en œuvre des sous-classes à utiliser.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top