【问题标题】:mapping a subset of core-data entities as a section-key-path将核心数据实体的子集映射为 section-key-path
【发布时间】:2014-03-10 21:17:37
【问题描述】:

我有一个一对多的关系:

Question<<---->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

我只想要属于特定类别的部分的问题。 如果我要为该类别的部分做一个NSFetchedResultsController,我会添加一个谓词,如

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"category == %@", category];
[fetchRequest setPredicate:projectPredicate];

但由于情况并非如此,我希望它们作为部分分隔符,我不确定如何正确修改我的 NSFetchRequest

那么我需要如何修改我的NSFetchRequest 以使我获得特定部分子集的问题并将这些部分作为 UITableView-Section 分隔符?

提前致谢。

【问题讨论】:

    标签: ios iphone objective-c core-data nsfetchedresultscontroller


    【解决方案1】:

    你快到了。您需要更新谓词并使用关键路径:

    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"section.category IN %@", categoryArray];
    

    这将导致请求检查每个问题并查看其部分的类别是否在数组中。这会将您过滤到某个类别的子集。

    【讨论】:

      猜你喜欢
      • 2014-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多