Dav*_*ong 6 cocoa date objective-c nspredicateeditor
我正在构建一个NSPredicateEditor,我希望能够进行高级日期比较.
我知道我可以建立一个NSPredicateEditorRowTemplate带有rightExpressionType的NSDateAttributeType,但我想建立的谓词必须远不止于此先进.
例如,我需要基本的比较,如:
dateKeypath < aDatedateKeypath <= aDatedateKeypath = aDatedateKeypath != aDatedateKeypath > aDatedateKeypath >= aDate这些基本比较很容易实现,我有这些工作.但是,我还需要进行比较,例如:
dateKeypath isInTheLast n days (或数周,数月,年)dateKeypath isNotInTheLast n days (或数周,数月,年)dateKeypath between aDate and anotherDate我怎样才能实现这些比较?我知道我需要创建一个自定义NSPredicateEditorRowTemplate,但我没有找到任何关于如何实现这样的清晰文档.
编辑
奖励积分也可用于知道如何使这些比较成为完整的日期 - 时间(年 - 月 - 日 - 时 - 分 - 秒)比较(因为NSDateAttributeType只有年 - 月 - 日的粒度).
回想起来,这个答案似乎有些明显:
我实际上描述了3个谓词编辑器行模板,而不是一个.这三个模板是:
dateKeyPath [<, <=, =, >, >=, !=] [NSDatePicker]dateKeyPath [inTheLast, notInTheLast] [NSTextField] [NSPopUpButton]dateKeyPath [between] [NSDatePicker] "and" [NSDatePicker]如果您构建这三个谓词编辑器行模板并将它们提供给predicateEditor,编辑器将意识到它们都使用相同的dateKeyPath,然后显示然后将所有操作符压缩到一个弹出按钮中.然后,它将根据选择的运算符将操作员右侧的实际视图切换出来.
编辑
对于奖励积分:您可以通过覆盖templateViews方法,从中检索templateViews super并datePickerElements在相应的选择器上设置来修改日期选择器的精度.
编辑2010年11月24日
对于再次遇到此问题的人,我写了一些关于创建自定义的博客文章NSPredicateEditorRowTemplates:
NSPredicateEditorRowTemplateNSPredicateEditorRowTemplate(这个显示如何执行inTheLast和inTheNext行模板)| 归档时间: |
|
| 查看次数: |
1357 次 |
| 最近记录: |