NSPredicate:“添加”一对多关系CoreData中所有实体的属性值
Posted
技术标签:
【中文标题】NSPredicate:“添加”一对多关系CoreData中所有实体的属性值【英文标题】:NSPredicate: 'add' the value of a property for all entities in one-to-many relationship CoreData 【发布时间】:2015-04-26 15:45:37 【问题描述】:我的 CoreData 模型有一个“父”实体,它与对象“子”具有一对多的关系。
我想要达到的目标如下:
每个“儿童”对象都有一个名为“津贴”的属性,代表他们每周获得的钱。它是一个整数。
是否可以在 ManagedObjectContext 中执行 NSFetchRequest 或类似的方法,返回为每个孩子组合的所有配额数字的值?
我目前正在做的是循环代码中的子对象并将其添加一个整数,但这一定更容易做对吗?
在 SQL 中类似于
SELECT SUM(Allowance) AS TotalAllowance FROM Child;
【问题讨论】:
这实际上并不是所指示问题的重复。链接的问题是关于获取表中字段的总和。这个问题是关于通过关系而不是直接这样做的。鉴于描述,他们的 SQL 也很糟糕,这使它看起来像链接的问题。 您需要结合使用 NSPredicate 和 NSExpression 来完成此操作。使用 NSPredicte 获取与特定 Parent 相关的孩子,然后使用 NSExpression 提取津贴并使用 expressionforfunction sum 将它们全部相加。无法提供详细答案,因为它被标记为重复。 如果不是那个问题,那么可能是 this one 的重复项 - 键值编码 @sum 聚合集合运算符将避免遍历所有子项的需要。 【参考方案1】:汇总记录的最佳方式是通过 KVC(键值编码)。获取所有感兴趣的记录,然后
NSNumber *sum = [allRecords valueForKeypath:@"@sum.allowance"];
【讨论】:
以上是关于NSPredicate:“添加”一对多关系CoreData中所有实体的属性值的主要内容,如果未能解决你的问题,请参考以下文章