Tengo un NSArrayController, companiesController
vinculado a una entidad de datos principales de nivel superior, Companies
.Uso de NSPredicate con Core Data para relaciones profundas
Un Company
tiene muchas Department
's, y una Department
tiene muchas Employee
; estos están representados por las relaciones 1 a muchos, departments
y employees
.
Basado en el atributo de un salary
Employee
pensé que podía hacer dinámicamente esto para el filtrado basado en el salario dentro de un método de interfaz de usuario llamada:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY departments.employees.salary < %@", [NSNumber numberWithInt:23000]];
[companiesController setFilterPredicate:predicate];
Por desgracia, esto me da el error: -[NSCFSet compare:]: unrecognized selector sent to instance
.
Gracias, esto funciona. Parece una solución, pero supongo que solo se trata de problemas de Core Data. – raheel
Supongo que tiene algo que ver con cómo Core Data traduce NSPredicate en declaraciones SQLite. La sintaxis es ambigua: ¿se refiere a CUALQUIERA o TODOS los empleados en un departamento en particular? Además, soy un principiante de SQL, pero supongo que incluso si tu predicado original se puede hacer en una declaración SQL directa, requeriría una unión potencialmente grande que Apple podría considerar demasiado intensiva en memoria o rendimiento para una búsqueda simple. – gerry3
Además, pasé bastante tiempo en esto, por lo que se agradecería una votación positiva :-). – gerry3