将核心数据实体的子集映射为section-key-path



我有一对多的关系:

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的类别是否在数组中。这将筛选到类别的一个子集。

最新更新