我正在尝试在应用程序中复制Finder基于NSPredicateEditor的元数据搜索。
[I'd prefer to get the Finder's exact NSPredicateEditor for free,但是除非有人对此问题有一个更好的答案,否则看来我将不得不尽最大可能复制Finder的搜索。
[当镜像Kind
选项时,我遇到了问题。首先,使用所有可用的Kind
选项保存Finder Spotlight搜索。
当我在生成的已保存搜索文件夹中单击Get Info
时,查询列为:
(kMDItemContentTypeTree=com.apple.application) &&
(kMDItemContentTypeTree=public.archive) &&
(kMDItemContentTypeTree = public.content) &&
(_kMDItemGroupId = 8) &&
(_kMDItemGroupId = 9) &&
(_kMDItemGroupId = 13) &&
(_kMDItemGroupId = 7) &&
(_kMDItemGroupId = 10) &&
(_kMDItemGroupId = 11) &&
(_kMDItemGroupId = 12) &&
(kMDItemContentTypeTree = public.text) &&
(kMDItemKind = "my_Kind_custom_text*"cdw)
我看到的问题是,单个“种类”用户显示的文本包含多个键路径,这些键路径基于所选择的正确值在生成的NSPredicate中使用。
“种类”可以(至少)代表kMDItemContentTypeTree
,_kMDItemGroupId
或kMDItemKind
。
创建NSPredicateEditorRowTemplate时,我传递了一个Left表达式,运算符和Right表达式的数组。然后,创建包含所有可能的排列的Left / Operator / Right的行模板。
((注:我正在创建所有NSPredicateEditorRowTemplate
的programatically rather than in Interface Builder)。
Finder是not”创建3个Left键路径和12个Right值的所有可能排列。它根据在右侧选择的值有选择地分配某个左键路径。
我基于NSRuleEditor
的指南,使用formattingDictionary
的http://funwithobjc.tumblr.com/post/1482915398/localizing-nspredicateeditor属性本地化行模板。
I can
在两个不同的NSPredicateEditorRowTemplate
中为两个不同的键路径表达式分配相同的“种类”定位。当我有两个行模板使用same
左键路径表达式本地化为“种类”时,以下“合并模板”引号为true,并且列表中仅显示一个“种类”。右边的弹出窗口是两个模板中所有值的并集。左键路径表达式创建两个都定位为“ Kind”的行模板时,我却在左表达式弹出窗口中获得了两个“ Kind”行。模板未合并。在运行时,NSPredicateEditor将模板合并在一起,第二个弹出窗口将显示日期模板的所有运算符的并集。 http://www.cocoabuilder.com/archive/cocoa/282859-nspredicateeditorrowtemplate-and-dynamic-templateviews.html
但是,当我使用different
我应该如何复制Finder的行为?我需要以某种方式合并左键路径,如果它们具有相同的本地化即使它们代表不同的键路径/表达式
,从而导致具有多个左键路径的单个行模板,每个左键路径具有独立的右值集。我正在尝试在应用程序中复制Finder基于NSPredicateEditor的元数据搜索。我希望免费获得Finder的确切NSPredicateEditor,但除非有人对...
我的解决方案是拥有一个源属性,然后有多个重命名的getter来返回该属性。