【发布时间】:2011-08-09 02:03:35
【问题描述】:
我有一个包含 Category、SubCategory 和DetailedItem 实体的DataModel。类别与子类别具有一对多的关系。每个 SubCategory 与DetailedItem 具有一对多的关系。因此,一个类别有一组子类别,并且对于每个子类别,它都有一组详细的项目。
Category 具有 subCategories 的 Set 属性和 Name 属性。 SubCategory 有一个 detailItems 的 Set 属性、一个 Name 属性和 Category 父属性
我的问题是如何使用 NSFetchedResultsController 从给定类别中的给定子类别中检索所有详细信息。
我正在尝试这样的事情,但我认为我的 NSPredicate 不正确
if (__fetchedResultsController == nil) {
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entityDescription = [NSEntityDescription entityForName:@"DetailedItem" inManagedObjectContext:[self managedObjectContext]];
[fetchRequest setEntity:entityDescription];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"Category.name CONTAINS[c] 'Movies'"];
[fetchRequest setPredicate:predicate];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES]; // probably not needed
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sortDescriptor]];
NSFetchedResultsController *fetchedResults = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:[self managedObjectContext] sectionNameKeyPath:nil cacheName:@"AllItems"];
fetchedResults.delegate = self;
__fetchedResultsController = fetchedResults;
NSError *error;
if (![__fetchedResultsController performFetch:&error]) {
NSLog(@"Error fetching");
}
[sortDescriptor release];
[fetchRequest release];
}
目标是如果类别 == 食品和子类别 == 肉类,那么我将获得属于该类别和子类别的所有详细项目的列表。如果有任何不清楚的地方,我会尝试提供更多背景信息。
【问题讨论】:
标签: objective-c core-data