显示核心数据的平衡

时间:2011-03-04 03:32:06

标签: cocoa core-data nstableview key-value-coding

我在示例应用中有3个实体:

帐户

  • 名称
  • 余额(NSDecimalNumber帐户总余额)
  • 余额(与余额的多种关系)
  • 交易(与Transaction.accounts的多对多关系)

交易

  • 收款人
  • 金额
  • 帐户(与Account.transactions的多对多关系)
  • 余额(与Balances.transaction的多对一关系)

余额

  • 金额
  • 帐户(与Account.balances的一对多关系)
  • 事务(与Transaction.balances的一对多关系)

我想在NSTableView中显示特定帐户的交易。当我想显示当前帐户的余额时,问题出现了。由于交易可能与多个帐户相关联,因此可能有多个余额。我想不出一种方法来选择与NSTableColumn中显示的当前帐户相关联的特定余额。有没有人有任何关于如何更改模型或如何将内容连接到NSTableView的建议,以便显示正确的平衡?

我唯一能想到的是创建一个NSCell的子类,它知道如何选择与当前帐户视图相关的余额或者做类似事情的NSValueTransformer。这似乎是一个非常不优雅的解决方案。如果有更好的方式我想知道如何。

更新

以下是演示应用程序的屏幕截图,其中说明了上述内容。我希望最右边的列显示特定交易的余额。如果事务具有balance属性,则运行良好;但是,在我的应用程序中,余额存储在一个单独的表中,因为每个事务可能有多种类型的余额。我无法弄清楚如何让它在表格视图中显示正确的平衡:

screenshot of potential app

2 个答案:

答案 0 :(得分:0)

使用控制器密钥value和模型密钥路径selection将表列的balance绑定绑定到帐户的数组控制器。

答案 1 :(得分:0)

您是否考虑通过此NSTableViewDataSource方法填充表格:

- (void)tableView:(NSTableView *)aTableView setObjectValue:(id)anObject forTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex

我知道,它看起来很难看,但是你可以用它翻筋斗。