核心数据推导表达式键路径使用运算符作为中间组件
core data derivation expression key path uses an operator as an intermediate component
我正在尝试为一对多关系属性的总和编写推导表达式。
我有一个项目和一个组,项目有价格和总价(数量*价格)。
我想为该组的总价格编写一个表达式作为其组成部分的总和。
构建时出现错误
error: Misconfigured Property: LAEItemGroup.totalPrice key path
“items.@sum.totalPrice” uses an operator as an intermediate
component
根据 documentation and the WWDC 2019 Making Apps with Core Data 应该可以得到一对多关系的总和。
有人可以帮我找到正确的语法或方法吗?
作为解决方法,我尝试编写一个在 class 中工作的 var
@objc
public var totalPrice: Double {
value(forKeyPath: "items.@sum.totalPrice") as? Double ?? 0
}
为什么 KeyPath 值有效但在模型编辑器中无效?
我现在有机会检查一下。模型编辑器使用的格式似乎是聚合运算符位于表达式的末尾(正如您所指出的,这与其他表达式中使用的格式不同):
items.totalPrice.@sum
在 Xcode 的模型编辑器中使用 items.totalPrice.@sum
作为派生的 属性 的表达式。
虽然这看起来只适用于数字类型?我有一个 属性 maxDate
派生的 属性 表达式
items.createdAt.@max
它编译但在运行时抛出错误:
'NSInvalidArgumentException', reason: 'currently unsupported (too many steps)
其中 Date 是 createdAt
的数据类型
我刚刚与 Rishi 一起完成了 WWDC 核心数据实验室,他帮助了我!您应该使用 sum:(items.totalPrice)
而不是 .@sum
语法。括号语法也可以用于其他一些功能(例如 count:(items)
(一对多关系中的项目数)或 max:(items.createdAt)
(最近项目的日期))。
我正在尝试为一对多关系属性的总和编写推导表达式。
我有一个项目和一个组,项目有价格和总价(数量*价格)。 我想为该组的总价格编写一个表达式作为其组成部分的总和。
构建时出现错误
error: Misconfigured Property: LAEItemGroup.totalPrice key path “items.@sum.totalPrice” uses an operator as an intermediate component
根据 documentation and the WWDC 2019 Making Apps with Core Data 应该可以得到一对多关系的总和。
有人可以帮我找到正确的语法或方法吗?
作为解决方法,我尝试编写一个在 class 中工作的 var
@objc
public var totalPrice: Double {
value(forKeyPath: "items.@sum.totalPrice") as? Double ?? 0
}
为什么 KeyPath 值有效但在模型编辑器中无效?
我现在有机会检查一下。模型编辑器使用的格式似乎是聚合运算符位于表达式的末尾(正如您所指出的,这与其他表达式中使用的格式不同):
items.totalPrice.@sum
在 Xcode 的模型编辑器中使用 items.totalPrice.@sum
作为派生的 属性 的表达式。
虽然这看起来只适用于数字类型?我有一个 属性 maxDate
派生的 属性 表达式
items.createdAt.@max
它编译但在运行时抛出错误:
'NSInvalidArgumentException', reason: 'currently unsupported (too many steps)
其中 Date 是 createdAt
我刚刚与 Rishi 一起完成了 WWDC 核心数据实验室,他帮助了我!您应该使用 sum:(items.totalPrice)
而不是 .@sum
语法。括号语法也可以用于其他一些功能(例如 count:(items)
(一对多关系中的项目数)或 max:(items.createdAt)
(最近项目的日期))。