问题标签 [nspredicateeditor]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
345 浏览

objective-c - UI conventions for NSPredicateEditor

I'm aware of bare bones sample / tutorial implementations of NSPredicateEditor:

http://developer.apple.com/library/mac/#samplecode/PredicateEditorSample/Introduction/Intro.html

The only places I've seen UI resembling a NSPredicateEditors in real applications are the Smart Playlist form in iTunes and the photo filter form in Aperture. I'm curious about conventions for:

  • Placement of a NSPredicateEditor in relation to a table view.
  • UI to hide and reveal the NSPredicateEditor.
  • Buttons (if any) to apply the predicate.

What are other examples of effective implementations of NSPredicateEditor in real applications?

0 投票
1 回答
342 浏览

cocoa - 为 Spotlight 元数据查询配置 NSPredicateEditor(RowTemplate)I'

我正在尝试配置一个NSPredicateEditor(在 Interface Builder 中)来编辑一个NSMetadataQuery.

作为第一步,我尝试配置一个NSPredicateEditorRowTemplate接受左侧表达式的键路径,尝试使用单个 keyPath ( kMDItemTextContent) 开始。

我不知道如何将所有部分都放入 IB。我选择了行模板,并在 IB Attributes Inspector 中将“Left Exprs”设置为“Key Paths”。但是,使用 Apple 的 PhotoSearch 示例作为模型,我似乎应该在此处输入用户可读的属性名称(例如“内容”);我不知道如何将它绑定到“ kMDItemTextContent”。

我在 PhotoSearch(*) 中剖析了(正确配置的)NIB,其中有一个NSKeyPathExpression指定附加到NSPopUpButton/的元数据属性NSPopUpButtonCell

NSPopUpButton我不知道在 IB 中导航到哪里可以找到NSExpression.

任何帮助表示赞赏。

(*) 如果您想知道,我通过将其转换为 XIB 进入了 NIB,确认它仍然正确构建,然后使用 BBEdit 检查它。

0 投票
1 回答
1055 浏览

objective-c - NSPredicateEditor/NSRuleEditor 行的不同行模板

我试图弄清楚是否可以为 NSPredicateEditor(或者,如果需要,一个 NSRuleEditor)中的特定行使用不同的行模板。我有一个截图,我认为它可以帮助我更清楚地解释这一点。 NSPredicateEditor 示例截图

在这个人为的示例中,我只希望人们生成一个过滤器,用于查找大于特定大小的特定路径。因此,在 A 部分(Any 块)中,用户只能指定路径规则(并且用户可以添加其他路径)。在 B 部分,我只希望 Size 选项可用。

文档中没有任何内容对我产生影响(或者,在我身上跳出的东西最终会变成其他东西),但看起来这可能会派上用场,这让我认为这可能是可能的.

0 投票
1 回答
375 浏览

objective-c - 将 NSPredicateEditor 绑定到共享用户默认控制器

我有一个 NSPredicateEditor,它是我正在制作的工具的首选项面板的一部分。

我想像存储 NSUserDefaults 对象中的任何其他项目一样存储用户的选择,但是当我将 Binding 添加到 NSPredicateEditor 对象并运行该工具时,它不会保留数据并进一步导致其他默认值不显示. 当我取消绑定并重新编译时,其他一切都回来了。

将 NSPredicatedEditor 数据存储为用户首选项的最佳方式是什么?

谢谢。

0 投票
4 回答
2683 浏览

objective-c - Xcode 4 中的 NSPredicateEditor

Xcode 4 的谓词编辑器控件有点问题 - 我认为我做的一切都是正确的,而且 IDE 本身似乎真的被破坏了。

我正在编写的应用程序中遇到此问题,但为了隔离它,我执行了以下操作:

创建一个带有窗口的新项目。在 XIB 编辑器中,添加一个 NSPredicateEditor 到它,并添加一行。将其保留为关键路径/字符串并添加两个关键路径 - “标题”和“作者”。使其大小写和变音不敏感。

创建 NSWindowController 的子类并为谓词编辑器添加一个 IBOutlet。

在 awakeFromNib 中,输入以下代码:

NSPredicate *myPredicate = [NSPredicate predicateWithFormat: @"(title CONTAINS[CD] %@) AND (writer CONTAINS[CD] %@)", @"", @""];

[_predicateEditor setObjectValue:myPredicate];

这会在控制台中产生以下内容:

2011-04-12 15:59:37.709 PredicateTest[38419:903] 警告 - 无法找到模板匹配谓词标题包含 [cd] ""

2011-04-12 15:59:37.710 PredicateTest[38419:903] 警告 - 无法找到模板匹配谓词 writer CONTAINS[cd] ""

当我单击 (+) 按钮添加新行时,我得到以下信息:

2011-04-12 15:59:40.044 PredicateTest[38419:903] 无法使用 nil 运算符或表达式创建比较谓词。

我是否认为我在这里没有做错任何事情,这应该有效吗?如果我将谓词编辑器行模板从关键路径更改,然后将其切换回关键路径,并编辑关键路径列表,Xcode 崩溃并出现内部一致性异常,这让我认为 Xcode 4 可能不符合标准它涉及谓词编辑。

有人有什么想法吗?我尝试在代码而不是 XIB 编辑器中创建一个 NSPredicateEditor,并且无休止地胡闹无济于事。谓词编辑功能阻碍了我向商店发布应用程序,所以这有点烦人。

0 投票
2 回答
383 浏览

objective-c - NSPredicateEditorRowTemplate,用空格指定键路径?

根据前面的问题,我不情愿地放弃了使用 IB/Xcode4 来编辑 NSPredicateEditor 并纯粹在代码中完成。

在编辑字段的 GUI 方式中,可以使用空格指定键路径,例如“字段名称”,这使得它们可以作为“字段名称”样式的键路径,同时仍然使用空格在 UI 中显示它们。我如何在代码中做到这一点?当我用空格指定它们时,它们不起作用。当我在 camelCase 中指定它们时,它们可以工作但在 camelCase 中显示。我只是添加了一堆这样的 NSExpressions:

0 投票
1 回答
1178 浏览

cocoa - 使用 NSPredicateEditor 强制显示复合行

我正在代码中创建一个 NSPredicateEditor 并尝试实现我希望这是一项相当简单的任务。基本上,我想显示一个复合 NSPredicateEditorRowTemplate (让用户选择在“以下所有/任何/都不是真的”时执行匹配)和它下面的一些相当基本的子行。为此,我构建了我的 NSPredicateEditor 并绑定了它的值,以便在用户编辑其谓词时保存更改。

我遇到的问题是,无论如何,我无法将复合 NSPredicateEditorRowTemplate 默认显示为具有单个子行的父行。当我最初创建谓词时,我传递了一个虚假的空谓词,如下所示:

为了强制显示复合行,我必须创建两个子行:

作为参考,这是我构建 NSPredicateEditor 的方式:

0 投票
1 回答
437 浏览

ios - 在 xCode 4 的谓词编辑器中添加变量

我似乎无法在新的 xCode4 的编辑器中找到使用变量添加获取结果的方法......我已经看过每个地方......每次右键单击,菜单项,一切......

任何人都知道如何做到这一点?

0 投票
2 回答
1295 浏览

objective-c - 使用 NSPredicate 分析字符串

你好!这个问题很长,所以一定要先坐下:)

在我的代码中,我从用户那里得到了一个字符串,然后我分析了那个字符串。通过分析,我的意思是遍历每个字符并将其与用户在 NSPredicateEditor 中设置的谓词进行数学运算。谓词以这种方式以编程方式设置:

所以你可以看到我有三个键路径和一些可以与之比较的常量。在分析字符串时,我基本上想这样做,在伪代码中:

你可以看到我的问题基本上出在哪里:

  • 由于空间的原因,'Character Before/After' 不能是键路径,但我想保持这种方式,因为它对用户来说更漂亮(想象一下有一些作为 'characterBefore' 的东西......)

  • 诸如“数字”之类的常量实际上代表了诸如“0123456789”之类的字符串,我也无法向用户显示

我能够找到解决此问题的方法,但现在它不适用于每个角色,而且效率也很低(至少在我看来)。我所做的是从谓词中获取谓词格式,替换我必须替换的内容,然后评估新格式。现在来看一些解释这一点的真实代码:

所以,给你,这是我正在做的简化版本。如果您看到任何拼写错误,很可能它们不在我的代码中,因为我已经对此进行了相当多的编辑,所以它会更简单。

总结一下:

  • 我需要评估用户针对许多字符所做的谓词,对其进行大量修改,同时尽可能提高效率
  • 我发现我的方法存在的问题是:

    • 我觉得一点都不干净
    • 我不能保证它适用于所有情况(当其中一个字符是换行符/输入字符时,谓词会引发错误,说它无法理解格式)

这就是所有的人!感谢您到目前为止的阅读。解决这个烂摊子时,愿你的上帝与你同在!

编辑:为了澄清一些事情,我要补充一点,这个问题的触发因素是我不能在设置谓词编辑器的一开始就定义一个带有名称的常量(显示给用户) 和一个表示该常量并以谓词格式插入的值。键路径也是如此:如果我可以有一个显示名称,然后一个值就是谓词的那些 var 字符串($VAR 或其他任何东西),那么所有问题都将得到解决。如果这是可能的,请告诉我如何。如果不可能,那么请关注我描述的其他问题。

0 投票
1 回答
107 浏览

cocoa - 清除 PredicatEditor 中输入的数据

我有一个 PredicateEditor,里面有很多行。当您在谓词行中输入任何值并且要清除所有存在的数据时,究竟需要做什么。?

我尝试通过遍历 subViews 并设置 null 值。它实际上是从视图中清除数据,而不是从谓词中清除数据。