如何创建Cocoa GUI来编辑NSDate对象数组?

时间:2010-09-23 16:56:36

标签: objective-c cocoa interface-builder nsdate cocoa-bindings

在我正在处理的一个应用中,我需要让用户编辑日期列表。我在数组中有这些NSDate个对象,并将其绑定到NSArrayController。我使用密钥路径NSTableColumnarrangedObjects.self(表视图中唯一的列)绑定到该数组控制器。这很好 - 我按照我想要的方式显示表格中显示的所有日期,我可以添加和删除日期。

问题是我无法编辑表格中的日期。如果我尝试,我会收到异常消息,NSDate不符合键self的键值编码,当然这是正确的,没有setSelf:方法。

我有两个想法可以解决这个问题:

  1. 我的数组不能直接存储NSDate,而是首先将其放在NSMutableDictionary或其他对象中。
  2. 不允许用户直接编辑日期,但让他删除错误的日期并重新添加更正日期。
  3. 我真的不喜欢这两种解决方案。我不喜欢第一个因为我必须把东西放在我的模型中才能使GUI正确。第二个不是非常用户友好。

    那么有没有人知道是否有第三种甚至更好的方法来解决这个问题?

    更新:临时解决方案

    现在我使用表视图的数据源来处理这个而不是使用绑定。但是我还是想看看是否有更好的解决方案使用绑定来解决这个问题,因为每次这个(或类似的问题)出现时我都不想写一个数据源。它不仅发生在NSDate,还发生在cocoa提供的所有其他值类型类中,即使它们是可变的(如NSMutableString)。

1 个答案:

答案 0 :(得分:1)

<强> 更新

似乎,由于NSDate没有可以设置的属性(与NSNumber一样),为了“编辑日期”,您必须用新创建的“替换旧”。日期必须是某个其他对象的属性或容器的一部分,如NSDictionary为NSDateFormatter和Cocoa Bindings做正确的事。

为早期的噪音道歉 - 当我尝试以前从未尝试过的东西时,我似乎总是学到新东西。 : - )