J'essaie de mettre en œuvre quelque chose de similaire au navigateur iTunes, pour naviguer dans une simple base de données de livres. J'ai les entités suivantes - Auteur, Genre et Livre. Je voudrais afficher une liste d'auteurs et une liste de genres, qui agissent pour filtrer la liste principale de livre.
J'ai essayé de faire cela de 2 façons différentes - comme le modèle:Hiérarchie de données Cocoa et navigateur
Author (has many) Genres (has many) Books
... avec plusieurs instances du même genre afin que chaque auteur a sa propre pour un nom de genre donné, je une belle hiérarchie de drill-down à afficher dans mes vues de table (bien que ce soit un peu illogique de dupliquer des Genres). Cependant, lorsque je sélectionne plusieurs Auteurs, je finis par afficher des dupes du même Genre, car ce sont en fait des objets distincts.
Alors, j'ai essayé de le faire, plus sensible, avec ces relations:
Author (has many) Books Book (has one) Genre
je peux obtenir le tableau genre en prenant du syndicat distinct de genre dans l'auteur actuellement sélectionné (s) book array, mais maintenant je me retrouve avec le problème de filtrer la liste de livres affichée en fonction du (des) genre (s) sélectionné (s). Parce que les genres sont partagés, je ne peux pas utiliser CurrentGenre.books, ou je perds le filtrage auteur sélectionné. J'ai remarqué le champ 'filter predicate' dans le constructeur de l'interface, disponible sur les contrôleurs d'objets, mais je suis en train de travailler sur comment l'utiliser pour appliquer le genre sélectionné comme filtre à une liste d'épisodes. The apple documentation dit:
« Vous pouvez taper un prédicat directement dans le champ de texte de l'éditeur de prédicats dans le panneau de l'inspecteur de l'interface Builder ou vous pouvez le configurer par programmation setFetchPredicate :.
ce qui me donne l'impression que je suis sur la bonne voie, mais c'est à peu près la fin du jeu. J'essaye de verrouiller le modèle dans un joli style Cocoa-esque maintenant, afin de minimiser les bits de 'code de colle' et les changements plus tard, il semble que ce soit un problème assez simple Je serais capable de trier graphiquement dans IB, mais jusqu'ici ça m'a échappé!
Merci d'avance.
Whoops, je en train de jouer avec différents exemples pour expliquer le problème le plus simplement possible, et a fini par être incompatibles. J'aurais dû être plus clair - Je comprends que je vais devoir appliquer un prédicat pour filtrer le contrôleur de tableau, mais je ne sais pas comment mettre en place cette relation dans IB, si c'est possible, ou si je veux dois-je revenir à écrire de la colle pour l'attacher ensemble? – Scott
Je * pense * que vous devez utiliser du code car je ne vois aucun moyen d'extraire des informations de n'importe quel (et vous tirerez de deux) contrôleurs de tableau dans la boîte de prédicat de filtre. – gerry3
Je m'en doutais autant, mais la référence dans le doco de la pomme me jeta au large! Cela a l'air super, applaudissements. – Scott