Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa 为聚光灯元数据查询配置NSPredicateEditor(行模板)';_Cocoa_Spotlight_Nspredicateeditor - Fatal编程技术网

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哦,对了,很好。这就是我在浏览器中输入的结果。