ios - 有没有办法在核心数据中获取计算值并将它们的总和分组?
问题描述
我有一个具有以下属性(以及其他一些属性)的核心数据实体:
价格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)* 数量”)
我想我理解这个问题,但我怎么能做到这一点(不获取内存中的所有条目并计算总和)?
解决方案
推荐阅读
- excel - VBA Excel复制Visio当前工作表绘图并粘贴到Excel工作表中
- javascript - 无法将内容定位在 flexbox 的中心
- javascript - 在表单中使用 jQuery 更改输入文本值
- c++11 - C++ / GCC 4.8 中的“round()”与“std::round()”和“fabs()”与“std::fabs()”
- javascript - 说 .match() 不是正则表达式中的函数
- node.js - express-jwt 总是返回 401
- command-line - 是否有任何用于解码 GDPR 同意字符串的命令行工具
- python - 如何修复 IndexError:索引 7 超出轴 0 的范围,大小为 7?
- sql-server - SQL Server 代理作业停止 SSIS 步骤,出现“意外错误”且没有任何错误信息
- javascript - 如何使用 JS 检索 API 数据