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”相同。我不明白为什么后者不起作用。有任何想法吗?我在这个论坛和其他论坛上看到过类似的问题,但还没有看到解释或解决方案。