有点迟到的答案,但也许这对某些使用Google的人有用。
您可以使用谓词@"parent == %@", child
为实体子设置NSFetchedResultsController
,然后将您的控制器作为代理添加到该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 {
而且任何其他委托方法你需要为你实现(文档有这是一个很好的代码片段
链接现在被破坏 –
谢谢 - 我更新它指向一个archive.org快照。 –