首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在同一个NSPredicateEditorRowTemplate中合并多个本地化的左键路径?

在同一个NSPredicateEditorRowTemplate中合并多个本地化的左键路径?
EN

Stack Overflow用户
提问于 2017-01-10 18:12:17
回答 1查看 277关注 0票数 5

我试图在一个应用程序中复制Finder的NSPredicateEditor元数据搜索。

我更愿意免费得到Finder的精确NSPredicateEditor,但是除非有人对这个问题有一个更好的答案,否则我将不得不尽可能地复制Finder的搜索结果。

在镜像Kind选项时,我遇到了一个问题。首先,我保存了带有所有可用Kind选项的Finder搜索。

当我在结果保存的搜索文件夹上Get Info时,查询被列出如下:

代码语言:javascript
复制
(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_kMDItemGroupIdkMDItemKind

创建NSPredicateEditorRowTemplate时,传递左表达式、运算符和右表达式的数组。然后创建行模板,其中包含左/运算符/右的所有可能的排列()

(注意:我正在创建所有的NSPredicateEditorRowTemplates 编程而不是在接口生成器中)。

查找器是,而不是,它创建了3个左键路径和12个右值的所有可能的排列。它是根据在右边选择的值有选择地分配某个左键路径。

我正在使用NSRuleEditorformattingDictionary属性本地化行模板,该属性基于以下指南:http://funwithobjc.tumblr.com/post/1482915398/localizing-nspredicateeditor

I可以在两个不同的NSPredicateEditorRowTemplate中为两个不同的键路径表达式分配相同的“种类”本地化。

当我使用相同的左键路径表达式将两个行模板本地化为“类别”时,下面的“合并模板”引号为真,列表中只显示一个“类别”。右边的弹出框是两个模板中所有金库的联合集合。

在运行时,NSPredicateEditor将将这些模板合并在一起,第二个弹出窗口将显示日期模板的所有操作符的联合。http://www.cocoabuilder.com/archive/cocoa/282859-nspredicateeditorrowtemplate-and-dynamic-templateviews.html

但是,当我创建两个行模板时,使用不同的左键路径表达式,这两个模板都本地化为“类别”,相反,我在左表达式中弹出了两个“类”行。模板没有合并。

我该如何复制Finder的行为?如果左键路径具有相同的本地化,即使它们表示不同的键路径/表达式,我也需要以某种方式合并它们,从而生成一个具有多个左键路径的单行模板,每个左键路径都具有独立的右值集。

EN

回答 1

Stack Overflow用户

发布于 2019-12-09 20:03:51

我的解决方案是拥有一个源属性,然后多个重命名的getter返回该属性。

每个kindImage-type getter都是一个关键路径,可以在谓词编辑器中独立定位。

代码语言:javascript
复制
@objc lazy var kind: String = { return getKind() }()
@objc lazy var kindImage      = kind
@objc lazy var kindText       = kind
@objc lazy var kindDocument   = kind

尽管返回相同的值,但谓词编辑器行将不会合并,因为它们使用的是不同的键路径。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41575563

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档