1

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

我的情况..

  • 我的模型可以有很多健美操实体,当然也可以包含很多集合。

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

  • 问题是,如果我创建并输入另一个健美操细节视图,我的获取当然会从所有健美操实体中拉出所有 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);
    }
}
4

1 回答 1

3

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

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

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

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

calisthenic.sets

在其中返回 NSSet。

看看以下关于如何生成模型文件的教程:Core Data 入门

于 2013-06-01T01:56:53.790 回答