NSFetchedResultsController com relação não atualizando

Digamos que eu tenha duas entidades, empregado e departamento. Um departamento tem um relacionamento de muitos com o empregado, muitos funcionários podem estar em cada departamento, mas cada funcionário pertence apenas a um departamento. Eu quero exibir todos os funcionários em uma tableview classificados por dados que são uma propriedade do departamento ao qual pertencem usando um NSFetchedResultsController. O problema é que eu quero que minha tabela seja atualizada quando um object de departamento recebe mudanças como acontece se as propriedades regulares do funcionário forem alteradas, mas o FetchedResultsController não parece rastrear objects relacionados. Eu passei este problema parcialmente fazendo o seguinte:

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

Obviamente, isso não é ideal, mas faz com que o método delegado de FRC baseado em funcionário didChangeObject seja chamado. O problema real que me resta agora é a sorting de um FRC que está rastreando objects de funcionários:

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

Isso funciona muito bem e classifica os funcionários corretamente na primeira vez que é chamado, o problema é que quando faço alterações em algum departamento somePropriedade que deve alterar a sorting da minha tabela de funcionários nada acontece. Existe alguma maneira legal de fazer com que meu funcionário FRC acompanhe as alterações em um relacionamento? Particularmente, eu só preciso de uma maneira de atualizar a sorting quando a sorting é baseada em uma propriedade relacionada. Examinei alguma questão semelhante, mas não consegui encontrar uma solução satisfatória.

O NSFetchedResultsController é realmente projetado apenas para observar uma entidade por vez. Sua configuração, embora faça sentido, é um pouco além do que o NSFetchedResultsController é atualmente capaz de assistir por conta própria.

Minha recomendação seria configurar seu próprio observador. Você pode basear-se no ZSContextWatcher que eu configurei no GitHub ou você pode torná-lo ainda mais simples.

Basicamente, você quer assistir às postagens do NSManagedObjectContextDidSaveNotification e, em seguida, recarregar a sua tabela quando um incêndio contiver sua entidade de departamento.

Eu também recomendaria arquivar um rdar com a Apple e pedir que o NSFetchedResultsController seja melhorado.