6

Estoy revisando la plantilla predeterminada de Xcode para un proyecto de iPhone Core Data. En el método que devuelve el controlador de resultados obtenidos, veo esto:Multiple NSFetchedResultControllers para diferentes entidades?

- (NSFetchedResultsController *)fetchedResultsController { 

    ... 

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Event" inManagedObjectContext:managedObjectContext]; 
[fetchRequest setEntity:entity]; 
    ... 

    return fetchedResultsController; 
}  

Parece que está estableciendo un nombre de entidad específico. ¿Qué pasa si tengo múltiples entidades? ¿Tendría 2 instancias de NSFetchedResultsController y tengo 2 métodos que devuelven el controlador correcto dependiendo de qué entidad estoy usando?

Gracias

Respuesta

6

Depende.

Por ejemplo, si tiene una entidad Person y una entidad Employee que hereda de Person, entonces puede usar un NSFetchedResultsController para una entidad Person que pueda obtener Personas y Empleados. Sin embargo, si tiene algo así como la entidad Fruit y la entidad Person (y Person no hereda de Fruit y viceversa), entonces es poco probable que pueda usar 1 NSFetchedResultsController para obtener Fruits and Persons.

Si necesita o no 1 o más NSFetchedResultsController depende de la jerarquía de herencia de su entidad.

+1

En mi aplicación tengo 2 entidades. Tarea y Bin. Un contenedor contiene múltiples Tareas, por lo que la entidad Bin tiene una relación To-Many con la entidad Tarea llamada "tareas". Cada tarea tiene una relación "bin" con la entidad Bin. Y tengo una relación inversa configurada entre los dos. Bin no hereda de Task y viceversa, pero sí tienen una relación. ¿Cuál sería la mejor opción en mi escenario? – indragie

+1

¿Qué muestra su vista de tabla? ¿Tareas o contenedores? Un patrón de IU común sería mostrar contenedores y luego mostrar tareas en un contenedor en particular cuando el usuario selecciona un contenedor en particular (vista maestra de detalles). – Giao

+1

Eso es exactamente lo que estoy haciendo. La vista maestra tiene una vista de tabla que enumera los contenedores, luego cuando se selecciona un contenedor, la vista de detalles tiene otra vista de tabla que muestra las tareas que están en ese contenedor. – indragie

Cuestiones relacionadas