如何从特定Core Data父实体ID中获取所有项目

时间:2013-06-01 01:10:42

标签: ios objective-c core-data entity fetch

我对此很新,并假设我遗漏了一些非常简单的东西,我已经尝试过这个网站以及我可以搜索的任何地方,但没有找到直截了当的答案。

我的情况......

  • 我的模特可以有很多健美操实体,当然可以包含很多套。

  • 我有一个健美操细节控制器,它使用取指令来拉取所有集数据并显示它。使用下面的代码,我的详细信息视图可以正常工作。

  • 问题是,如果我创建并输入另一个健美操详细信息视图,我的提取当然会从所有健美操实体中提取所有Set实体,我当然只想拉取我正在交互的健美操ID的集合用。

那么如何在我的获取请求中提取与1个健美操ID相关的所有集合?

- (void)fetchSets
{
    NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Set"];
    NSString *cacheName = [@"Set" stringByAppendingString:@"Cache"];

    NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"setNumber" ascending:YES];

    [fetchRequest setSortDescriptors:@[sortDescriptor]];

    self.fetchedResultsController = [[NSFetchedResultsController alloc]initWithFetchRequest:fetchRequest managedObjectContext:self.calisthenic.managedObjectContext sectionNameKeyPath:nil cacheName:cacheName];

    NSError *error;
    if (![self.fetchedResultsController performFetch:&error]) {
        NSLog(@"Fetch failed: %@", error);
    }
}

1 个答案:

答案 0 :(得分:3)

您可以使用NSPredicate根据作为健美操的父对象过滤获取请求。

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

上面一行假定父母的属性称为健美操。

或者,如果您为健美操和集合创建了模型文件(NSManagedObject的子类),您可以直接获取父健美操对象并直接获取集合。

calisthenic.sets

返回NSSet。

请查看以下有关如何生成模型文件的教程:Getting started with Core Data