使用 NSPredicateEditor,有没有办法免费获得所有 Finder 搜索类别?
Posted
技术标签:
【中文标题】使用 NSPredicateEditor,有没有办法免费获得所有 Finder 搜索类别?【英文标题】:Using NSPredicateEditor, is there a way to get all of the Finder search categories for free? 【发布时间】:2016-10-28 18:35:20 【问题描述】:我正在向我的应用添加一个 NSPredicateEditor,以允许用户搜索特定文件和文件类别。
来自 Inteface Builder 的默认 NSPredicateEditor 模板添加了一个仅包含“名称”、“地址”和“标志”类别的控件。我正在寻找更具体的类别。
我知道我可以在 Interface Builder 中将菜单项添加到这些菜单中,但我非常不希望自己维护所有用于文件搜索的各种类别和值的列表。
在 Finder 中,可以将多种类别和值添加到搜索中。
使用保存此搜索然后在保存的 seach 文件夹上使用“获取信息”显示用于生成 Finder 的 NSPredicateEditor 的谓词:
((** = "this*"cdw) &&
(kMDItemContentTypeTree = "public.png"cd) &&
InRange(kMDItemLastUsedDate,$time.today(-2d),$time.today(+1d)) &&
InRange(kMDItemContentModificationDate,$time.today(-4d),$time.today(+1d)) &&
InRange(kMDItemContentCreationDate,$time.today(-8d),$time.today(+1d)) &&
(kMDItemDisplayName = "*screenshot*"cd) && (kMDItemTextContent = "content*"cdw))
单击“其他”类别类型会打开一个菜单,其中包含更多更多特定类别。
我的问题是,是否将来自 Finder 的同样复杂且自定义的 NSPredicateEditor “免费”添加到我的应用程序中?还是我需要声明并维护我的应用支持的所有搜索类型的列表?
【问题讨论】:
【参考方案1】:我的问题是,是否将来自 Finder 的同样复杂且自定义的 NSPredicateEditor “免费”添加到我的应用程序中?
不,这个NSRuleEditor
是应用程序查找器的一部分。
是的,还有一些额外的。打开/保存文件面板中有一个类似的编辑器。
【讨论】:
谢谢。当你说“是的,还有一些额外的东西”时,你指的是什么? 您不仅可以获得规则编辑器,还可以获得“打开/保存文件”面板的其余部分。 你是说有一个面板可以免费添加到任何应用程序中,包括谓词/规则以及打开/保存?如果是这样,那是哪个班级?NSOpenPanel
及其超类NSSavePanel
。
嗯。我仍然不明白这些面板与规则/谓词的关系。我似乎在这些面板中没有看到对谓词的任何支持?有截图吗?【参考方案2】:
有点晚了,但你应该看看 MDSchema.h。 MDSchemaCopyAllAttributes 将返回整个受支持的 Spotlight 架构,MDSchemaCopyDisplayNameForAttribute 将返回列表的显示名称,MDSchemaCopyDisplayDescriptionForAttribute 将返回架构中每个项目的值类型。从这里你可以构建你自己的 NSRuleEditor。 NSPredicateEditor 会更难,因为你得到了很多内置的行为,然后你必须重写,但可能仍然有可能。
【讨论】:
以上是关于使用 NSPredicateEditor,有没有办法免费获得所有 Finder 搜索类别?的主要内容,如果未能解决你的问题,请参考以下文章
使用 NSPredicateEditor 过滤一天的最佳方法
NSPredicateEditor 不调整 NSTextField 的大小