1

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

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

第一列的值绑定到 NSArrayController 的排列对象,模型键路径为“名称”。那里没问题。

第二列的值绑定到 NSArrayController 的排列对象,模型键路径为“branches.@sum.sales”。这行不通。我收到错误消息:“不支持 addObserver:forKeyPath:options:context:]。密钥路径:@sum.sales”

相反,如果我在 Country 类中添加一个“totalSales”方法,并且该方法的实现方式如下:

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

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

4

1 回答 1

0

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

第二列的值应该以与第一列完全相同的方式绑定到 NSArrayController。我不知道你为什么做出不同的事情以及你想要达到的目标。

您的第一个任务是将表列绑定到数组列,这对所有列和类型的工作方式相同。

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

    [totalCountField bind: @"value" toObject: arrayController
          withKeyPath:@"arrangedObjects.@sum.price" options:nil];
于 2011-11-08T12:05:26.620 回答