Propiedades del object KVO dentro de una relación entre muchos

Tengo una relación Núcleo de datos para muchos que consta de Padre <— >> Niño. Me gustaría configurar un mecanismo de observación de valores key de modo que cuando una propiedad (por ejemplo, firstName, lastName) en cualquiera de los objects Child cambia, activa una notificación. Cuando se utiliza la syntax estándar de KVO:

[self.parentObject addObserver:self forKeyPath:@"children" options:NSKeyValueObservingOptionNew context:NULL] 

esto solo notifica cuándo se modifica la relación en sí (es decir, se agrega o elimina un object Child de la relación), en lugar de cuando cambia una propiedad de uno de esos objects secundarios. Obviamente, así es como se diseñó para operar, así que no hay nada malo con eso, pero ¿cómo puedo usar KVO para alcanzar mi requisito deseado?

¡Gracias por adelantado!

AFAIK no hay una forma incorporada de observar las properties del object de colección con una sola línea de código. En su lugar, debe agregar / eliminar observadores cuando el object se inserta / elimina de su colección.

Puede encontrar una explicación y un proyecto de muestra aquí: https://web.archive.org/web/20120319115245/http://homepage.mac.com/mmalc/CocoaExamples/controllers.html (consulte la sección "Observar una colección no es lo mismo que observar las properties de los objects en una colección "sección)

Actualizar:
El enlace se rompió: lo cambié a una instantánea de archive.org.

Un poco de respuesta tardía, pero tal vez sea útil para alguien que esté escuchando esto.

Puede configurar un NSFetchedResultsController para el elemento child con el pnetworkingicado @"parent == %@", child y luego agregar su controller como un delegado a ese fetchedResultController. Se llamará al delegado cuando cambie alguna de las properties del niño, así como cuando se agreguen, etc. A continuación se incluye un código de ejemplo. También agregué un descriptor de sorting para clasificar a los niños por su nombre al

 ... NSFetchRequest* fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Child"]; fetchRequest.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES]]; NSPnetworkingicate* pnetworkingicate = [NSPnetworkingicate pnetworkingicateWithFormat:@"parent = %@", parent]; self.fetchResultsController.fetchRequest.pnetworkingicate = pnetworkingicate; self.fetchResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:context sectionNameKeyPath:nil cacheName:nil]; self.fetchResultsController.delegate = self; ... 

Luego implementas el método de delegado

 - (void)controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type newIndexPath:(NSIndexPath *)newIndexPath { 

Y cualquier otro método de delegado que necesite para su implementación (la documentation tiene un muy buen fragment de código para esto