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

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

在我正在开发的一个应用程序中,我需要让用户编辑日期列表。我将这些 NSDate 对象放在一个数组中,并将其绑定(bind)到 NSArrayController。我使用键路径 arrangedObjects.selfNSTableColumn( TableView 中的唯一列)绑定(bind)到该数组 Controller 。这工作正常 - 我按照我想要的方式获取表中显示的所有日期,并且可以添加和删除日期。

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

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

  1. 让我的数组不直接存储 NSDate ,而是先将其放入 NSMutableDictionary 或其他对象中。
  2. 不允许用户直接编辑日期,而是让用户删除错误的日期并重新添加更正的日期。

我不太喜欢这两种解决方案。我不喜欢第一个,因为我必须在模型中添加一些东西才能获得正确的 GUI。第二个不太人性化。

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

更新:临时解决方案

现在我使用 TableView 的数据源来处理这个问题,而不是使用绑定(bind)。但我仍然想看看是否有更好的解决方案使用绑定(bind)来解决该问题,因为我真的不想每次出现此问题(或类似问题)时都编写数据源。这种情况不仅发生在 NSDate 上,也发生在 cocoa 提供的所有其他值类型类上,即使它们是可变的(如 NSMutableString)。

最佳答案

已更新

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

对之前的噪音表示歉意 - 当我尝试以前从未尝试过的东西时,我似乎总是学到新的东西。 :-)

关于objective-c - 如何创建 Cocoa GUI 来编辑 NSDate 对象数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3780725/

相关文章:

objective-c - 奇怪的是 uibuttons 文本标签不会改变

iOS 禁用横向 LaunchScreen.storyboard

objective-c - NSTableView 单击时触发另一个操作

objective-c - 如何在具有 NSAttributedStrings 的 NSComboBox 中添加自动完成功能

ios - 悬停时在 CPTPlotSymbol 上显示工具提示

iphone - 如何使用 NSUserDefaults 正确工作(检索值)

cocoa - 在 Interface Builder 中设置水平线 (NSBox) 线宽

objective-c - 我如何获得 MKAnnotationView 的坐标?

cocoa - NSButton setAction 选择器

Cocoa JSON - 检查数组还是字典