NSFetchedResultsController con la relación no se actualiza

Digamos que tengo dos entidades, empleado y departamento. Un departamento tiene una relación de muchos con el empleado, muchos empleados pueden estar en cada departamento, pero cada empleado solo pertenece a un departamento. Quiero mostrar todos los empleados en una vista de tabla ordenada por datos que son propiedad del departamento al que pertenecen utilizando un NSFetchedResultsController. El problema es que quiero que mi tabla se actualice cuando un objeto del departamento recibe cambios como lo hace si las propiedades regulares del empleado cambian, pero el FetchedResultsController no parece rastrear objetos relacionados. He superado este problema parcialmente haciendo lo siguiente:

for (Employee* employee in department.employees) { [employee willChangeValueForKey:@"dept"]; } /* Make Changes to department object */ for (Employee* employee in department.employees) { [employee didChangeValueForKey:@"dept"]; } 

Obviamente, esto no es ideal, pero sí hace que se llame al método de delegado basado en empleado de FRC didChangeObject. El verdadero problema que me queda ahora es la clasificación de un FRC que rastrea los objetos de los empleados:

 NSEntityDescription *employee = [NSEntityDescription entityForName:@"Employee" inManagedObjectContext:self.managedObjectContext]; NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"department.someProperty" ascending:NO]; 

Esto funciona muy bien y ordena correctamente a los empleados la primera vez que se llama, el problema es que cuando realizo cambios en algunos departamentos, no ocurre nada que cambie la clasificación de mi tabla de empleados. ¿Hay alguna buena manera de que mi empleado FRC siga los cambios en una relación? En particular, solo necesito una forma de que actualice la clasificación cuando la clasificación se basa en una propiedad relacionada. Revisé una pregunta similar pero no pude encontrar una solución satisfactoria.

NSFetchedResultsController realidad solo está diseñado para ver una entidad a la vez. Su configuración, si bien tiene sentido, es un poco más allá de lo que NSFetchedResultsController actualmente puede ver por sí mismo.

Mi recomendación sería configurar tu propio observador. Puede basarlo en ZSContextWatcher que configuré en GitHub o puede hacerlo aún más simple.

Básicamente, desea ver las publicaciones de NSManagedObjectContextDidSaveNotification y luego volver a cargar su tabla cuando se active un incendio que contenga la entidad de su departamento.

También recomendaría archivar un rdar con Apple y pedir que se NSFetchedResultsController el NSFetchedResultsController .