J'ai un NSArrayController, companiesController
lié à une entité de base de données de niveau supérieur, Companies
.Utilisation de NSPredicate avec des données de base pour les relations profondes
Un Company
a beaucoup de Department
, et un Department
a beaucoup Employee
; ceux-ci sont représentés par les relations un-à-plusieurs, departments
et employees
.
Sur la base de l'attribut salary
d'un Employee
je pensais que je pouvais le faire de façon dynamique pour le filtrage basé sur le salaire à l'intérieur d'une méthode appelée UI-:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY departments.employees.salary < %@", [NSNumber numberWithInt:23000]];
[companiesController setFilterPredicate:predicate];
Hélas, cela me donne l'erreur: -[NSCFSet compare:]: unrecognized selector sent to instance
.
Merci, cela fonctionne. Cela ressemble à une solution de contournement, mais je suppose que ce sont les problèmes de Core Data. – raheel
Je suppose que cela a quelque chose à voir avec la façon dont Core Data traduit le NSPredicate en instructions SQLite. La syntaxe est ambiguë: voulez-vous dire TOUT ou TOUT employé (s) dans un département particulier. En outre, je suis un novice SQL, mais je suppose que même si votre prédicat d'origine peut être fait dans une instruction SQL simple, cela nécessiterait une jointure potentiellement importante qu'Apple peut considérer comme trop gourmande en mémoire ou en performances pour un seul chargement. – gerry3
Aussi, j'ai passé un certain temps sur ce sujet, donc un vote serait apprécié :-). – gerry3