gpt4 book ai didi

cocoa - 使用 @sum 等集合运算符进行 NSTableColumn 绑定(bind)

转载 作者:行者123 更新时间:2023-12-03 17:26:10 24 4
gpt4 key购买 nike

Mac OS X.CoreData 应用程序。 NSTableView 由 NSArrayController 控制,绑定(bind)到 Country 实体的托管对象上下文。 Country 实体具有“name”属性和与 Branch 实体的一对多关系“branches”。 Branch 实体有一个“sales”属性(NSNumber)。

NSTableView 有两个 NSTableColumn。第一个显示国家的名称。第二个应该显示该国家/地区所有分支机构的总销售额。

第一列的值绑定(bind)到NSArrayController的arrangedObjects,模型键路径为“name”。没问题。

第二列的值绑定(bind)到NSArrayController的arrangedObjects,模型键路径为“branches.@sum.sales”。这是行不通的。我收到错误消息:“不支持 addObserver:forKeyPath:options:context:]。 key 路径:@sum.sales”

如果我向 Country 类添加“totalSales”方法,并且该方法的实现如下:

- (NSNumber *)totalSales
{
return [[self branches] valueForKeyPath:@"@sum.sales"];
}

然后我将该列绑定(bind)到“totalSales”,它工作正常。我对集合运算 rune 档的理解是,这应该与简单地绑定(bind)到“branches.@sum.sales”相同。我不明白为什么后者不起作用。有任何想法吗?我在这个论坛和其他论坛中看到过类似的问题,但尚未看到解释或解决方案。

最佳答案

我不知道这是否仍然是您的话题,但它确实需要一个答案。

第二列的值应该以与第一列完全相同的方式绑定(bind)到 NSArrayController 。我不知道你为什么做出不同的做法以及你实际上想要实现什么。

您的第一个任务是将表列绑定(bind)到数组列,这对于所有列和类型都是相同的。

第二个任务是获取绑定(bind)到某些其他对象(例如 NSTextfield)的某些 NSTableColumn 的总和。这样做是这样的:

    [totalCountField bind: @"value" toObject: arrayController
withKeyPath:@"arrangedObjects.@sum.price" options:nil];

关于cocoa - 使用 @sum 等集合运算符进行 NSTableColumn 绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4517145/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com