3

我正在尝试为一对多关系属性的总和编写派生表达式。

我有一个项目和一个组,该项目有一个价格和总价(数量 * 价格)。我想为该组的总价格写一个表达式,作为其组成部分的总和。

在此处输入图像描述

当我构建时,我得到了错误

错误:错误配置属性:LAEItemGroup.totalPrice 键路径“items.@sum.totalPrice”使用运算符作为中间组件

根据文档WWDC 2019 使用 Core Data 制作应用程序,应该可以获得多对多关系的总和。

有人可以帮我找到正确的语法或方法。

作为一种解决方法,我尝试编写一个在该类中工作的 var

@objc
public var totalPrice: Double {
    value(forKeyPath: "items.@sum.totalPrice") as? Double ?? 0
}

那么为什么 KeyPath 值有效但在模型编辑器中无效?

4

3 回答 3

1

我刚刚和 Rishi 一起完成了一个 WWDC 核心数据实验室,他帮助了我!您应该使用sum:(items.totalPrice)而不是.@sum语法。括号语法也可以用于其他一些函数(例如count:(items)(多对多关系中的项目数)或max:(items.createdAt)(最近项目的日期))。

于 2021-06-11T01:27:39.487 回答
0

我现在有机会检查一下。似乎模型编辑器使用的格式是聚合运算符位于表达式的末尾(正如您所指出的,这与其他表达式中使用的格式不同):

items.totalPrice.@sum
于 2020-07-07T20:47:17.450 回答
0

items.totalPrice.@sumXcode 的模型编辑器中用作派生属性的表达式。

这看起来只适用于数字类型吗?我有一个属性maxDate,其派生属性表达式为

items.createdAt.@max

它编译但在运行时抛出错误:

'NSInvalidArgumentException', reason: 'currently unsupported (too many steps)

其中 Date 是数据类型createdAt

于 2020-07-26T01:53:28.357 回答