我有一对多的关系:
Question<<---->Section
一个section有许多问题。一个问题有一个部分
我现在创建了一个NSFetchedResultsController
,将所有问题按其部分分开到UITableView-Sections中。
NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"MJUQuestion"];
NSSortDescriptor *sortByName = [NSSortDescriptor sortDescriptorWithKey:@"title" ascending:YES];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sortByName]];
NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc]
initWithFetchRequest:fetchRequest
managedObjectContext:context
sectionNameKeyPath:@"section.title"
cacheName:nil];
现在所有的问题都被分成了相应的部分,这是有效的,但不是我想要的。
我不想要所有章节的问题,但我想要特定章节子集的所有问题。
节本身被分成了几个类别:
Section<<----->Category
并且我只需要属于特定类别的部分的问题。如果我要为该类别的Sections做一个NSFetchedResultsController
,我会添加一个谓词,如
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"category == %@", category];
[fetchRequest setPredicate:projectPredicate];
但由于情况并非如此,我希望它们作为节分隔符,我不确定如何正确修改我的NSFetchRequest
。
那么我需要如何修改我的NSFetchRequest
,我得到部分的特定子集的问题和这些部分作为UITableView-Section分隔符?
提前感谢。
你就快成功了。您需要更新谓词并使用键路径:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"section.category IN %@", categoryArray];
这将导致请求检查每个问题并查看其section的类别是否在数组中。这将筛选到类别的一个子集。