使用NSPredicateEditor,有没有办法免费获得所有Finder搜索类别?

时间:2016-10-28 18:35:20

标签: cocoa nspredicate finder nspredicateeditor nsruleeditor

我正在为我的应用添加NSPredicateEditor,以允许用户搜索特定文件和文件类别。

Inteface Builder中的默认NSPredicateEditor模板添加了一个仅包含“name”,“address”和“sign”类别的控件。我正在寻找更具体的类别。

default interface builder NSPredicateEditor

我知道我可以在Interface Builder中为这些菜单添加菜单项,但我更不希望自己维护列表中所有文件搜索的各种类别和值。

在Finder中,可以为搜索添加各种类别和值。

default categories for Finder searches

使用保存此搜索,然后在保存的搜索文件夹上使用“获取信息”显示用于生成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))

点击“其他”类别类型会显示一个包含各种更多特定类别的菜单。

Other Categories for Finder Search

我的问题是,如果将同样复杂且定制的Finder NSPredicateEditor添加到我的应用程序中“免费”吗?或者我是否需要声明然后维护我的应用支持的所有搜索类型的列表?

2 个答案:

答案 0 :(得分:1)

  

我的问题是,如果添加来自Finder的同样复杂且定制的NSPredicateEditor"免费"到我的应用程序?

不,这个NSRuleEditor是应用Finder的一部分。

是的,还有一些额外的。类似的编辑器位于“打开/保存文件”面板中。

答案 1 :(得分:1)

有点晚了,但你应该看看MDSchema.h。 MDSchemaCopyAllAttributes将返回整个受支持的Spotlight架构,MDSchemaCopyDisplayNameForAttribute将返回列表的显示名称,MDSchemaCopyDisplayDescriptionForAttribute将返回架构中每个项目的值类型。从这里你可以建立自己的NSRuleEditor。 NSPredicateEditor会更难,因为你得到了许多内置的行为,然后你必须覆盖,但可能仍然可能。