基于关系表 - CoreData从父表中获取记录

时间:2011-06-27 13:51:17

标签: objective-c ios core-data nspredicate nsfetchrequest

对不起,如果标题没有任何意义。

让我再解释一下。

我有这个CoreData应用程序,我在CoreData中相对较新。我有两张桌子。一个是预算,一个是支出。因此,Budget表有一个名为TotalBudget的字段。现在我在消费表中有不同的行,用户输入的时间和该表有一个名为个人消费的字段。

现在我希望做的是只获得个人支出总和小于TotalBudget(预算表)的预算。在SQL语言中,它将类似于下面的

选择BudgetName 从预算 TotalBudget< (从支出中选择Sum(IndividualBudget),其中BudgetID = Budget.BudgetID)

如何在核心数据中实现这一目标?我有从一个表中检索数据的代码,我可以使用NSPredicate来过滤基于BudgetStartDate和BudgetEndDate的记录,但我怎样才能实现这样的目标。

由于

1 个答案:

答案 0 :(得分:1)

假设有以下对象模型:

Budget
--amount (decimal)
--spend (relationship to IndividualSpend object)

IndividualSpend
--amount (decimal)

这将为您提供一系列预算实体,其中支出金额为>预算金额:

NSFetchRequest *fetch = [[NSFetchRequest alloc] init];
fetch.entity = [managedObjectModel objectForKey:@"Budget"];
fetch.predicate = [NSPredicate predicateWithFormat:@"spend.@sum.amount > amount"];

NSError *error = nil;
NSArray *results = [context executeFetchRequest:fr error:&error];
if (error) {
  NSLog(@"ERROR: %@", error);
}
NSLog(@"Results: %@", results);