根据关系表从父表中获取记录 - CoreData

Posted

技术标签:

【中文标题】根据关系表从父表中获取记录 - CoreData【英文标题】:Get Records From Parent Table Based On Relationship Table - CoreData 【发布时间】:2011-06-27 13:51:17 【问题描述】:

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

让我再解释一下。

我有这个 CoreData 应用程序,而且我在 CoreData 方面相对较新。我有两张桌子。一个是预算,一个是支出。所以预算表有一个名为 TotalBudget 的字段。现在我在支出表中有不同的行,用户在一段时间内输入了这些行,并且该表有一个名为“个人支出”的字段。

现在我希望做的是只获得那些个人支出总和小于 TotalBudget(预算表)的预算。在 SQL 语言中,它会像下面这样

选择预算名称 从预算 其中 TotalBudget

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

谢谢

【问题讨论】:

【参考方案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);

【讨论】:

以上是关于根据关系表从父表中获取记录 - CoreData的主要内容,如果未能解决你的问题,请参考以下文章

根据Laravel Vue Js Api中的关系从多个表中删除数据

将值插入到从父表引用的子表中

Linq to Sql - 具有父表关系的双重分组

从父表和子表中删除行

什么是父表和子表

如何处理 CORE DATA 中的一对多关系