Pregunta

Estoy familiarizado con el uso básico común y de un NSFetchedResultsController la gestión de las filas de una tabla, pero tengo un problema interesante.

Mis datos está organizada como tal: agenda <--- >> Día <--- >> Ruta. Actualmente tengo una vista de tabla que tiene Horarios con un controlador se ha podido recuperar la gestión de la creación y eliminación de las listas. Ahora quiero crear una vista de tabla de rutas / Días.

Me gustaría enumerar una ruta en cada fila, y crear encabezados de sección personalizada que correspondan a la información dentro de la jornada correspondiente. Pude probablemente algo truco juntos por ir a buscar todas las rutas, y luego seccionar ellos por la relación inversa a la que hay respectiva día, pero estoy preocupado de que entonces no voy a ser capaz de tomar ventaja de los métodos fetch controlador de delegado para la actualización de la tabla cuando logrado los objetos cambia.

¿Alguien tiene alguna experiencia con esto? Cualquier ideas sobre cómo avanzar?

Gracias.

¿Fue útil?

Solución

El NSFetchedResultsController está diseñado para este fin, por lo que no hay que inventar la rueda.

Cuando usted hace funcionar su NSFetchedResultsController, se debe considerar la especificación de la sectionNameKeyPath. Esa propiedad es exactamente lo que necesita para la generación automática de la sección para usted.

En su caso, lo haría de la siguiente manera:

NSEntityDescription: @"Route"
NSPredicate: @"day = %@"
NSFetchedResultsController: sectionNameKeyPath:@"route.day"

Ves lo que quiero decir, si necesita más código de aclaración, dime.

Otros consejos

Es necesario investigar a raíz de la relación a muchos a través de la NSSet que se crea para que usted represente la Ruta - >> ruta Día en su base de datos. Suponiendo que usted nombró su relación isTraversedOn y el día-> Lista como isScheduled, sería algo como:

Route *route=[self.fetchedResultsController.fetchedObjects objectAtIndex:0];
for (Day *day in route.isTraversedOn) {
   Schedule *schedule = day.isScheduled;
   NSLog(@"route is traversed on %@ according to schedule %@",day.name,schedule.name);
}

la NSSet simplemente guarda el ID real de los objetos indicados.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top