2009-09-19 8 views
5

Tengo el modelo típico en Core Data (para iPhone) con Departments and Employesss (Departamento - >> Empleado).Core Data to-many relaciones. ¿Son cargas perezosas?

No quiero cargar a todos los empleados de un departamento cada vez que lo cargo, así que pensé que crearía el Empleado como una Propiedad Obtenida. Pensé que podría definir algunos predicados como este:

employee.deparmentId = department.departmentId 

pero no pude (con el editor gráfico Xcode).

Ahora, leyendo algunos mensajes, me inclino a definir una relación con muchos para el Departamento para el Empleado (y su reverso) y lo uso.

Mi pregunta es: ¿Son para muchos lazy Lazy Loading? o ¿va a cargar a todos mis empleados en la "base de datos" cada vez que creo (recupero) una lista de departamentos?

Gracias de antemano Gonso

Respuesta

14

No, objetos relacionados a-muchos a uno y relaciones están cargadas con pereza por defecto. Sin embargo, si necesita acceder a muchos de ellos cada vez que busca un departamento, entonces, por razones de rendimiento, puede solicitar a Core Data que los cargue simultáneamente (esto se denomina precarga). Puede hacer esto de la siguiente manera:

[fetchRequest setReturnsObjectsAsFaults:NO]; 
[fetchRequest setRelationshipKeyPathsForPrefetching:[NSArray arrayWithObjects:@"employees", nil]]; 
+0

por el contrario, NO DEBO cargar Empleados a menos que vaya a trabajar con ellos. Además, la mayoría de las veces no voy a enumerar todos los empoweres (es decir, ejecutar a través del conjunto) pero obtener un subconjunto (es decir, ejecutar una búsqueda). Gracias. – gonso

Cuestiones relacionadas