Objective c 如何创建Cocoa GUI来编辑NSDate对象数组?
在我正在开发的一个应用程序中,我需要让用户编辑日期列表。我将这些Objective c 如何创建Cocoa GUI来编辑NSDate对象数组?,objective-c,cocoa,interface-builder,nsdate,cocoa-bindings,Objective C,Cocoa,Interface Builder,Nsdate,Cocoa Bindings,在我正在开发的一个应用程序中,我需要让用户编辑日期列表。我将这些NSDate对象放在一个数组中,并将其绑定到NSArrayController。我使用键路径arrangedObjects.self将NSTableColumn(表视图中唯一的列)绑定到该数组控制器。这很好用-我可以按照我想要的方式在表中显示所有日期,并且可以添加和删除日期 问题是我无法编辑表中的日期。如果我尝试,我会得到一个异常,告诉我,NSDate不是符合keyself的键值编码,这当然是正确的,没有setSelf:方法 我有两
NSDate
对象放在一个数组中,并将其绑定到NSArrayController
。我使用键路径arrangedObjects.self
将NSTableColumn
(表视图中唯一的列)绑定到该数组控制器。这很好用-我可以按照我想要的方式在表中显示所有日期,并且可以添加和删除日期
问题是我无法编辑表中的日期。如果我尝试,我会得到一个异常,告诉我,NSDate
不是符合keyself
的键值编码,这当然是正确的,没有setSelf:
方法
我有两个办法来解决这个问题:
NSDate
,而是先将其放入NSMutableDictionary
或其他对象中NSDate
上,而且发生在cocoa提供的所有其他值类型类上,即使它们是可变的(比如NSMutableString
) 更新
似乎,由于NSDate没有可以设置的属性(与NSNumber一样),为了“编辑日期”,您必须用新创建的日期替换“旧”日期。日期必须是其他对象的属性或容器(如NSDateFormatter和Cocoa绑定的NSDictionary)的一部分,才能执行正确的操作
为之前的噪音道歉-当我尝试以前从未尝试过的东西时,我似乎总能学到新东西。:-) 当然,我是绑定到列的,我使用的是
NSDateFormatter
。但是我会试着把self
放在关键路径之外。你说“当然”,就好像没有其他方法一样。它可以。:-)表本身可以绑定,人们会忘记使用格式化程序。我们无法知道,因为您没有在第一次修订中详细说明。无论如何,self的模型关键路径是错误的。在给定索引处排列的对象就是它自己。即使我省略了键路径的self
部分,它也不会工作。编辑日期后,我收到一条错误消息,指出\uu NSCFDate
不符合键
的键值编码。对不起,我以前从未尝试过将NSDate对象加载到数组控制器的内容数组中。即使使用日期格式化程序,这也不起作用。您最初的想法是将其包含在NSMutableDictionary中,这似乎确实可以很好地进行编辑。我相信这是因为你不能修改日期。您创建了一个日期,如果您想更改它,您可以用另一个日期替换它。因此,它必须被包装在某物的属性中,或者被扔进字典中。更新我的答案以反映这一点。(因为这是一个有趣的测验,所以我一开始就错了。:-)