Ich habe eine NSArrayController, companiesController
gebunden an eine oberste Ebene Core Data-Entität, Companies
.Verwenden von NSPredicate mit Core Data für tiefe Beziehungen
Ein Company
hat viele Department
, und ein Department
hat viele Employee
; Diese werden durch die 1-zu-viele-Beziehungen departments
und employees
dargestellt.
Basierend auf dem Attribute salary
ein Employee
ich dachte ich, das dynamisch in einem UI genannten Verfahren zur Filterung basierend auf Gehalt tun könnte:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY departments.employees.salary < %@", [NSNumber numberWithInt:23000]];
[companiesController setFilterPredicate:predicate];
Ach, gibt dies mir den Fehler: -[NSCFSet compare:]: unrecognized selector sent to instance
.
Danke, das funktioniert. Scheint wie ein Workaround, aber das sind nur die Probleme von Core Data. – raheel
Ich würde annehmen, dass es etwas damit zu tun hat, wie Core Data das NSPredate in SQLite-Anweisungen übersetzt. Die Syntax ist mehrdeutig: meinst du BELIEBIGE oder ALLE Mitarbeiter in einer bestimmten Abteilung. Ich bin auch ein SQL-Neuling, aber ich schätze, selbst wenn Ihr ursprüngliches Prädikat in einer einfachen SQL-Anweisung erledigt werden könnte, würde es eine potentiell große Verknüpfung erfordern, die Apple zu speicher- oder leistungsintensiv für einen einzelnen Abruf hält. – gerry3
Auch ich habe eine ganze Weile damit verbracht, so ein Up-Vote zu schätzen :-). – gerry3