Données de base un-à-plusieurs extraient des données

D'accord, j'ai une relation un-à-plusieurs dans datatables de base. Un repas peut se composer de nombreux aliments différents. Mon code ne semble pas fonctionner dans le Fetch Controller. Je peux le dire avec confiance, le self.meal est le repas actuel que j'essaye d'aller chercher. Je partage le context à travers l'application.

Le problème que j'ai est que l'application affiche des aliments, mais il ne semble pas correspondre à ce qui devrait être à l'intérieur d'un repas. Dès que j'ajoute un aliment, il l'affiche immédiatement, même s'il n'est pas à l'intérieur du repas.

Toute aide ou suggestion, je fais cela chercher correctement.

- (NSFetchedResultsController *)fetchedResultsController { self.context = [(AppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext]; if (_fetchedResultsController != nil) { return _fetchedResultsController; } NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; NSEntityDescription *entity = [NSEntityDescription entityForName:@"Food" inManagedObjectContext:self.context]; [fetchRequest setEntity:entity]; NSPredicate *foodPredicate = [NSPredicate predicateWithFormat:@"meals == %@", self.meal]; [fetchRequest setPredicate:foodPredicate]; NSSortDescriptor *sort = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:NO]; [fetchRequest setSortDescriptors:[NSArray arrayWithObject:sort]]; [fetchRequest setFetchBatchSize:20]; NSFetchedResultsController *theFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.context sectionNameKeyPath:nil cacheName:@"Root"]; self.fetchedResultsController = theFetchedResultsController; _fetchedResultsController.delegate = self; [fetchRequest release]; [theFetchedResultsController release]; return _fetchedResultsController; } 

Si self.meals était nil alors le NSFetchedResultsController returnnerait les Food qui ne font pas partie d'un Meal , ce qui expliquerait le comportement que vous remarquez.

Votre prédicat est incorrect. Vous ne devriez pas comparer les meals , qui sont des objects NSSet of Meal , à un seul meal . Vous devez voir si les meals mis sur l'object Food contiennent ce repas.

  [NSPredicate predicateWithFormat:@"%@ in meals", self.meal]