Cocoa 为聚光灯元数据查询配置NSPredicateEditor(行模板)';
我正在尝试配置Cocoa 为聚光灯元数据查询配置NSPredicateEditor(行模板)';,cocoa,spotlight,nspredicateeditor,Cocoa,Spotlight,Nspredicateeditor,我正在尝试配置nspredicateditor(在Interface Builder中)以编辑NSMetadataQuery的谓词 作为第一步,我将尝试配置一个NSPredicateEditorRowTemplate来接受左侧表达式的键路径,并尝试使用单个键路径(kMDItemTextContent)开始 我不知道如何将所有的片段都放入IB。我已经选择了行模板,并在IB属性检查器中将“Left Exprs”设置为“Key path”。但是,以苹果的PhotoSearch为例,我似乎应该在这里输入
nspredicateditor
(在Interface Builder中)以编辑NSMetadataQuery
的谓词
作为第一步,我将尝试配置一个NSPredicateEditorRowTemplate
来接受左侧表达式的键路径,并尝试使用单个键路径(kMDItemTextContent
)开始
我不知道如何将所有的片段都放入IB。我已经选择了行模板,并在IB属性检查器中将“Left Exprs”设置为“Key path”。但是,以苹果的PhotoSearch为例,我似乎应该在这里输入一个用户可读的属性名(比如“内容”);我不知道如何将它绑定到“kMDItemTextContent
”
我在PhotoSearch(*)中解析了(正确配置的)NIB,其中有一个NSKeyPathExpression
指定附加到nspoupButton
/nspoupButtonCell
的元数据属性
我无法在IB中找到nspoupButton
,我也不知道如何将它绑定到NSExpression
谢谢你的帮助
(*)如果您想知道,我是通过将NIB转换为XIB来进入NIB的,确认它仍然正确构建,然后使用BBEdit对其进行检查。我发现在Interface Builder中使用
NSPredicateEditor
和friends是一项极其繁琐的任务。因此,我在代码中完成所有行模板配置
对于您的情况,听起来您不需要自定义行模板子类,因此您可能只需要执行以下操作:
#define NSPERT NSPredicateEditorRowTemplate
NSPERT * template = [[NSPERT alloc] initWithLeftExpressions:[NSArray arrayWithObject:[NSExpression expressionForKeyPath:kMDItemTextContent]]
rightExpressionAttributeType:NSStringAttributeType
modifier:NSDirectPredicateModifier
operators:[NSArray arrayWithObject:
[NSNumber numberWithUnsignedInteger:NSContainsPredicateOperatorType]]
options:(NSCaseInsensitivePredicateOption|NSDiacriticInsensitivePredicateOption)];
获得模板后,只需将其添加到predicateEditor:
NSMutableArray * templates = [[myPredicateEditor rowTemplates] mutableCopy];
[templates addObject:template];
[template release];
[myPredicateEditor setRowTemplates:templates];
[templates release];
至于翻译“
kMDItemTextContent
”,如果它不是自动发生的(我认为可能发生),您可以使用显示不同的名称。快速回答,谢谢!我已经启动并运行了它;唯一的问题是,在将键路径添加到输入数组之前,有必要将它们包装在[NSExpression Expression ForkeyPath:keyPath]中。@Doug哦,对了,很好。这就是我在浏览器中输入的结果。