2010-08-26 10 views
3

Quel est le moyen le plus efficace d'effectuer cette requête sur une table CoreData? Pour utiliser le modèle de base de données standard des employés, je souhaite que les ID de service DISTINCT de tous les départements contenant des employés avec la description de poste «chef» soient utilisés. En l'occurrence, il n'y a qu'une seule table (Employés) pertinente ici - je n'ai pas de table de départements, seulement des ID de département qui sont répétés.Obtenir une liste distincte d'ID dans CoreData

Répondre

5

Étant donné le schéma que vous décrivez, j'exécuterait une extraction avec un prédicat (chaîne de format) comme @"jobDescription LIKE 'chef'" puis utiliser le codage clé-valeur pour obtenir les valeurs uniques du tableau résultant:

[result valueForKeyPath:@"@distinctUnionOfValues.departmentID"]; 

ou créer un ensemble:

NSSet *deparmentIDs = [NSSet setWithArray:[result valueForKey:@"departmentID"]]; 

en fonction de la taille du problème (combien d'employés), faire la dernière étape en mémoire peut se révéler prohibitif. À ce stade, vous devrez créer une entité départementale et faire le travail pour vous assurer de connecter les employés appropriés à chaque département. Ensuite, vous pouvez faire un fetch de départements avec un prédicat (chaîne de format) comme @"ANY employees.jobDescription LIKE 'chef'" pour obtenir les départements avec les employés du chef.

+0

Merci! La deuxième de ces solutions proposées a fonctionné pour moi, mais j'ai décidé de refactoriser pour éviter des opérations coûteuses comme ceci. – ed94133

+0

Merci deuxième travaux pour moi gret j'étais serching pour le groupe par .... –