核心数据一对多取数据

好的,我在核心数据中有一对多的关系。 一餐可以由许多不同的食物组成。 我的代码似乎不是在取数控制器中工作。 我可以自信地说,self.meal是目前正在尝试的餐。 我通过应用程序共享上下文。

我遇到的问题是应用程序正在显示食物,但它似乎不匹配应该在餐内。 一旦我添加了食物,即使它不在膳食内,也立即显示出来。

任何帮助或build议,我这样做正确。

- (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; } 

如果self.meals nil那么self.meals将返回不属于Meal ,从而说明你注意到的行为。

你的谓词是不正确的。 你不应该把meals ,这是一个Meal对象的NSSet ,一meal 。 您需要查看“ Food对象上的meals是否包含该餐点。

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