Cocoa,使用Collection Operators和To-Many关系属性进行绑定

时间:2012-02-29 14:54:36

标签: cocoa core-data interface-builder cocoa-bindings

做了相当数量的谷歌并在这里看,我相信以下不能做到。我很有趣,为什么它不能完成,人们最好的解决方法,我在下面提供我的。

我使用简单的部门< ---->>员工模型,两者都具有name属性,而雇员实体也具有timeWorked属性。

问题

我想绑定一个表,第一列显示departement.name,第二列显示部门。@ sum.employees.timeWorked。试图这样做会导致错误:

[<_NSFaultingMutableSet 0x1d5e50> addObserver:forKeyPath:options:context:] is not supported. Key path: timeWorked
Cannot remove an observer <NSTableBinder 0x1a9280> for the key path "employees.timeWorked" from <Depatement 0x1faf40> because it is not registered as an observer.

然而,绑定到department.employees。@ count确实有效(但我想要更多!)。

其他讨论

以下是另一个有同样问题的话题:nstablecolumn-binding-using-collection-operators-like-sum

另一个:cocoa-bindings-binding-to-the-many-end-of-a-to-many-relationship

我的解决方法

我对此问题的解决方案是为部门实体创建一个执行总和的属性:

-(NSNumber *)departmentHours {  
    return [self valueForKeyPath:@"employees.@sum.timeWorked"]; }

然后简单地绑定它。

当我想要进行某种数据整理/聚合时,添加这些属性只需要更多代码,但我觉得能够绑定到更优雅  部。@ sum.employees.timeWorked。

任何想法?它不起作用的原因?更好的解决方法?

干杯全部

1 个答案:

答案 0 :(得分:0)

你写的关于绑定到department.@sum.employees.timeWorked - 但是,我认为你应该绑定到department.employees.@sum.timeWorked