Немного поздний ответ, но, возможно, он будет полезен для тех, кто гуглит это.
Вы можете установить NSFetchedResultsController
для дочернего объекта с предикатом @"parent == %@", child
, а затем добавить свой контроллер в качестве делегата к этому fetchedResultController. Делегат будет вызываться при изменении любого из свойств дочернего элемента, а также при их добавлении и т. Д.
Пример кода приведен ниже. Я также добавил дескриптор сортировки для сортировки детей по их имени в
...
NSFetchRequest* fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Child"];
fetchRequest.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES]];
NSPredicate* predicate = [NSPredicate predicateWithFormat:@"parent = %@", parent];
self.fetchResultsController.fetchRequest.predicate = predicate;
self.fetchResultsController = [[NSFetchedResultsController alloc]
initWithFetchRequest:fetchRequest managedObjectContext:context
sectionNameKeyPath:nil cacheName:nil];
self.fetchResultsController.delegate = self;
...
Затем вы реализуете метод делегата
- (void)controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject
atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type
newIndexPath:(NSIndexPath *)newIndexPath {
И любой другой метод делегата, необходимый для вашей реализации (в документации есть очень хороший фрагмент кода для этого