我在我的一个项目中用一种稍微不同的方式解决了这个问题。我让子控制器创建并使用它自己的NSFetchRequest。它工作得很好,但我很想知道是否有人推荐不同的方法。
因此,使用you应用程序的术语,这里是:在childController中,我使用配料实体创建了一个全新的NSFetchRequest,并在其上放置一个谓词以从我的配方中查找所有配料。注意:这假设你有一个反向关系从成分回到配方。
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Ingredient" inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entity];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"recipe == %@", self.recipe];
[fetchRequest setPredicate:predicate];
所以childController使用这个fetchRequest,而不是RootViewController中的NSFetchRequest。每当添加、删除或更新一个成分时,childController就会收到消息。别忘了childController需要实现NSFetchedResultsControllerDelegate协议。