Comment récupérer programme sélection de table et la ligne de table pour l'application de base de données?

StackOverflow https://stackoverflow.com/questions/2259408

Question

Je suis en train de faire une application de base de données dans laquelle lorsque vous sélectionnez un « joueur » dans un TableView, et une liste de tous ses coéquipiers apparaît dans une deuxième tableView, avec une colonne pour combien de fois ces deux joueurs ont joué sur le même "équipe" (une autre entité).

Cela m'a obtenu complètement bloqué, car si je sais comment remplir une table à partir d'un tableau normal, en utilisant ArrayControllers et Core Data a vraiment encombré mon point de vue de la situation.

Comment cela aborderez-vous?

Était-ce utile?

La solution

Le vôtre est un problème Manchettes, pas un problème de données de base. : -)

Vous devriez certainement obtenir une poignée sur Maître / Détail configuration (avec un contrôleur RAID supplémentaire pour la partie de détail, pour la simplicité ). Votre contrôleur RAID maître représente toutes les instances de joueur, alors que votre contrôleur RAID de détail représente les Coéquipiers -. Ou les « team.players » de la sélection de Maître (moins lui-même)

Le contrôleur RAID Coéquipiers aura son entité et le contexte d'objet géré mis en place comme d'habitude (voir la documentation). Le « ContentSet » sera lié à la clé du contrôleur de contrôleur RAID Master « de sélection », avec « team.players » comme le modèle chemin de clé.

L'astuce consiste à filtrer le lecteur du contrôleur maître sélectionné en utilisant prédicats . Ce que vous pouvez faire avec le contrôleur RAID Filtre des prédicats. Peut-être l'un avec un format de « auto! =% @ », Où « % @ » représente la sélection du contrôleur de tableau de maître. Je vais laisser prédicats (un sujet compliqué à elle-même) pour vous. Rappelez-vous, vous pouvez les définir dans le code ([myController setFilterPredicate: myPredicate]) ou en utilisant les liaisons. Les prédicats sont indépendante de base de données ainsi.

Obtenir sélection

Étant donné que le contrôleur RAID est en charge du tableau de la table représente, il est préférable de demander au contrôleur de réseau ce que sa sélection est. Une façon est de demander à ses -arrangedObjets pour les objets à ses -selectedIndexes.

NSArray * selectedObjects = [[myArrayController arrangedObjects] objectsAtIndexes:[myArrayController selectedIndexes]];

Vous pouvez également demander pour ses -selectedObjects. Il existe des différences entre ces deux approches qui sont décrites dans la documentation (référence API et documents conceptuels) que vous devez certainement comprendre, mais demander au contrôleur est le concept le plus important , peu importe si vous utilisez un NSArrayController ou un contrôleur personnalisé qui est conforme aux protocoles et.

Disclaimer: TYPED hâte après une soirée de Sake sociale. Pas vérifié pour les erreurs. : -)

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