Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 用于日期比较的NSPredicateEditorRowTemplate_Objective C_Cocoa_Date_Nspredicateeditor - Fatal编程技术网

Objective c 用于日期比较的NSPredicateEditorRowTemplate

Objective c 用于日期比较的NSPredicateEditorRowTemplate,objective-c,cocoa,date,nspredicateeditor,Objective C,Cocoa,Date,Nspredicateeditor,我正在构建一个nspredicateditor,我希望能够进行高级日期比较 我意识到我可以用NSDateAttributeType的rightExpressionType构建一个NSPredicateEditorRowTemplate,但是我想要构建的谓词需要比这更高级 例如,我需要进行如下基本比较: dateKeypath=aDate 这些基本的比较是很容易实现的,我有这些工作。但是,我还需要做如下比较: dateKeypath为n天(或周、月、年) 日期键路径不在最近n天内(或周、月、

我正在构建一个
nspredicateditor
,我希望能够进行高级日期比较

我意识到我可以用
NSDateAttributeType
rightExpressionType
构建一个
NSPredicateEditorRowTemplate
,但是我想要构建的谓词需要比这更高级

例如,我需要进行如下基本比较:

  • dateKeypath
  • dateKeypath aDate
  • dateKeypath>=aDate
这些基本的比较是很容易实现的,我有这些工作。但是,我还需要做如下比较:

  • dateKeypath为n天(或周、月、年)
  • 日期键路径不在最近n天内
    (或周、月、年)
  • aDate和另一个日期之间的日期键路径
我怎样才能进行这些比较呢?我知道我需要创建一个自定义的
NSPredicateEditorRowTemplate
,但我还没有找到任何关于如何实现这种功能的清晰文档

编辑
另外,如果您知道如何将这些比较设置为完整的日期时间(年-月-日-小时-分-秒)比较(因为
NSDateAttributeType
仅具有年-月-日粒度)。

回顾过去,这个答案似乎有些明显:

我实际上描述了3个谓词编辑器行模板,而不是一个。这三个模板是:

  • dateKeyPath[=,!=][NSDatePicker]
  • dateKeyPath[inTheLast,notInTheLast][NSTextField][nspoupbutton]
  • dateKeyPath[between][NSDatePicker]“和”[NSDatePicker]
如果构建这三个谓词编辑器行模板并将它们交给谓词编辑器,编辑器将意识到它们都使用相同的
dateKeyPath
,然后显示并将其所有运算符压缩到一个弹出按钮中。然后,它将根据选择的操作员将实际视图切换到操作员右侧

编辑

奖励点:您可以通过覆盖
templateview
方法,从
super
检索templateview,并在相应的选择器上设置
datePickerElements
来修改日期选择器的精度

编辑2010年11月24日

对于任何再次遇到此问题的人,我已经写了几篇关于创建自定义
NSPredicateEditorRowTemplates
的博客文章:

  • (这个演示如何在最后一个和下一个行模板中执行

我认为第二个谓词模板不会像预期的那样工作。问题是您需要一个相对日期—一个相对于当前日期计算的日期


我已经根据苹果工程师的一些代码(和建议)实现了这样一个谓词编辑器模板(以及所有相关代码)。如果有人感兴趣,我可以提供细节等。我的实现非常复杂。

是的,我最终也做到了。用你的想法给我发封电子邮件!我很乐意和你分享笔记。当然。我是个新手。我如何给你发电子邮件?我的个人资料有一个到我的主页的链接,主页上有一个电子邮件表单。