好的,我在核心数据中有一个一对多的关系。一顿饭可以包含许多不同的食物。我的代码似乎不能在 Fetch Controller 中运行。我可以自信地说,self.meal 是我正在尝试获取的当前 Meal。我在整个应用程序中共享上下文。
我遇到的问题是应用程序正在显示食物,但它似乎与膳食中应该包含的内容不太匹配。只要我添加食物,它就会立即显示出来,即使它不在餐中。
任何帮助或建议,我正在正确地执行此提取操作。
- (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
那么 NSFetchedResultsController
将返回不属于 a 的 Food
膳食
,从而说明您注意到的行为。
关于iphone - 核心数据一对多获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9731062/