首页 > 解决方案 > 有没有办法在核心数据中获取计算值并将它们的总和分组?

问题描述

我有一个具有以下属性(以及其他一些属性)的核心数据实体:

价格1 | 价格2 | 数量

每个条目的值是:value = (price1 + price2) * quantity

我想计算按相关名称分组的不同值的总和,但我正在努力解决它,我什至不知道它是否可能。

我试过这个:

let valueRequest = NSFetchRequest<NSDictionary>(entityName: RowMO.entityName)
valueRequest.resultType = .dictionaryResultType
let priceExpression = NSExpression(forFunction: "add:to:", arguments: [NSExpression(forKeyPath: \RowMO.price1), NSExpression(forKeyPath: \RowMO.price2)])
let valueExpression = NSExpression(forFunction: "multiply:by:", arguments: [priceExpression, NSExpression(forKeyPath: \RowMO.quantity)])
let sumExpression = NSExpression(forFunction: "sum:", arguments: [valueExpression])
let sumDescription = NSExpressionDescription()
sumDescription.expression = sumExpression
sumDescription.name = "sum"
sumDescription.expressionResultType = .doubleAttributeType
valueRequest.propertiesToFetch = [#keyPath(RowMO.file.name), sumDescription]
valueRequest.propertiesToGroupBy = [#keyPath(RowMO.file.name)]

但我明白了:

由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“选择中聚合总数的错误参数(必须是键路径或常量值):(“(价格 1 + 价格 2)* 数量”)

我想我理解这个问题,但我怎么能做到这一点(不获取内存中的所有条目并计算总和)?

标签: iosswiftcore-data

解决方案


推荐阅读