问题标签 [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 回答
949 浏览

cocoa - 为多键自动生成谓词行模板?

在我的核心数据托管对象模型中,我有一个实体 Foo,它与名为 baz 的实体 Baz 具有一对多关系(具有一对多逆向)。Baz 有一个名为“tag”的字符串属性。当我使用[NSPredicateRowEditorTemplate templatesWithAttributeKeyPaths:[NSArray arrayWithObject:@"baz.tag"] inEntityDescription:FooDescription]为 NSPredicateEditor 创建行编辑器时,结果包含(如预期的那样)一个行模板,如

[弹出:baz.tag] [弹出:包含|是|不是|...] [TextField]

当我从弹出窗口中选择“包含”时,带有谓词的查询按预期工作。如果我选择任何其他弹出窗口(例如“is”),我会收到以下错误:“此处不允许对多键”。我可以使用[NSPredicateRowEditorTemplate templatesWithAttributeKeyPaths:inEntityDescription:]还是必须手动构建行编辑器?

0 投票
2 回答
451 浏览

cocoa - 为自动生成的谓词行模板修改 NSDatePicker

如何修改由返回的属性NSDatePickerElementFlagsNSDatePicker行内模板?我想显示小时:分钟以及日期。NSDate[NSPredicateRowEditorTemplate templatesWithAttributeKeyPaths:inEntityDescription:]NSDatePicker

更新 我在下面添加了一个答案,从 cocoa-dev 列表中收集。

0 投票
1 回答
2221 浏览

objective-c - 使用 NSPredicateEditor 编辑 NSPredicate

我可以使用 NSPredicateEditor(NSRuleEditor 的子类)轻松创建 NSPredicate。我想知道的是:

如何获取现有的 NSPredicate(由编辑器创建的)并将其重新加载到编辑器中以便我可以更改它?

编辑:我尝试了@John 的使用 setObjectValue: 的建议,但这并不太奏效。让我再解释一下我的设置:

我有一个基于 Document 的 cocoa 应用程序,并且 Document 窗口上只有一个 NSPredicateEditor。在dataOfType:error:方法中,我有:

readFromData:ofType:error:方法中,我有:

我已验证谓词已正确存档和取消存档,但在打开保存的谓词后,谓词未加载到谓词编辑器中。(是的,predicateEditor 连接为 IBOutlet)

0 投票
2 回答
453 浏览

cocoa - NSPredicateEditor,忽略没有搜索词的行?

我马上说我是一个没有经验的 Cocoa 程序员,如果我的问题在文档中以某种方式得到了回答,而我只是错过了它,或者我不明白 NSPredicateEditor 的工作原理,我深表歉意。但是,我确实尝试在文档中搜索并使用 Google 搜索,但收效甚微。因此,我向您提出这个问题。

我正在尝试使用 NSPredicateEditor 过滤基于核心数据的表视图。通过创建 NSCompoundPredicate,过滤工作正常,就基于各种标准的行过滤而言。但是,当谓词编辑器中的一行在其搜索字段中没有文本时,返回的 NSPredicate 类似于

...不匹配任何核心数据记录——不是我想要的。如果该行中的搜索字段为空白,则基本上我根本不希望它过滤我的数据集。

那么我的问题是,忽略谓词的这些部分的最简单/最佳解决方案是什么?我最初的想法是逐行解析 NSPredicateEditor 值(NSPredicate *)predicateForRow:(NSInteger)row并自己重建谓词,忽略试图匹配的行"",但这似乎不必要地麻烦。将最终的 NSCompoundPredicate 拆开- (NSArray *)subpredicates并以这种方式进行编辑似乎也可能是我采取了错误的策略。有没有更优雅的方法来做到这一点?

*为了清楚起见,我正在考虑编辑谓词的副本,然后将其传递给我的表格视图的控制器,而不是实际编辑当前存储在 NSPredicateEditor 中的初始谓词。

0 投票
2 回答
961 浏览

cocoa - NSPredicateEditorRowTemplate 和 CoreData

我正在尝试为我的核心数据实体生成谓词编辑器模板。在我的代码中,我有以下内容:

打印出模板数组的内容给了我以下信息:

CFArray 0x1002d7400 [0x7fff70ff5f20] {type = immutable, count = 2, values = ( 0 : NSPredicateEditorRowTemplate 0x10025c090: [name] [99, 4, 5, 8, 9] NSStringAttributeType 1: NSPredicateEditorRowTemplate 0x1002,52dc0: [年龄] [4, 0, 2, 1, 3] NSInteger16AttributeType )}

当此代码执行时,我在控制台上得到以下信息:

执行此操作的界面看起来非常简单,所以我似乎无法弄清楚我做错了什么。任何帮助将不胜感激!

编辑

我最初的问题是当我的模板不支持它时,我正在使用 LIKE 运算符。但是,我很困惑为什么在将复合谓词传递到编辑器时会收到类似的警告。

或者

这两个都会产生与我最初的问题类似的警告。但是,我觉得奇怪的是,我可以使用单个谓词并构建复合和谓词,但我不能将预构建的复合和谓词传递到编辑器中。

0 投票
1 回答
855 浏览

objective-c - 如何将 NSPredicateEditor/NSRuleEditor 背景设置为交替行?

我已经看到一些应用程序在其谓词编辑器中使用交替行背景,但我不知道他们是如何做到的。

0 投票
2 回答
1389 浏览

objective-c - NSPredicateEditorRowTemplate 用于日期比较

我正在构建一个NSPredicateEditor,并且我希望能够进行高级日期比较。

我意识到我可以NSPredicateEditorRowTemplaterightExpressionTypeof构建一个NSDateAttributeType,但是我想要构建的谓词需要比这更高级。

例如,我需要进行基本比较,例如:

  • dateKeypath < aDate
  • dateKeypath <= aDate
  • dateKeypath = aDate
  • dateKeypath != aDate
  • dateKeypath > aDate
  • dateKeypath >= aDate

这些基本比较很容易实现,我有这些工作。但是,我还需要进行以下比较:

  • dateKeypath isInTheLast n days(或几周、几个月、几年)
  • dateKeypath isNotInTheLast n days(或几周、几个月、几年)
  • dateKeypath between aDate and anotherDate

我怎样才能实现这些比较?我知道我需要创建一个 custom NSPredicateEditorRowTemplate,但我还没有找到任何关于如何实现这样的事情的明确文档。

编辑 奖励积分也可用于了解如何使这些比较成为完整的日期时间(年-月-日-小时-分钟-秒)比较(因为NSDateAttributeType只有年-月-日粒度)。

0 投票
2 回答
3181 浏览

cocoa - 使用存储在 CoreData 模型中的 FetchRequest 进行变量替换

我总是完全在代码中创建我的 NSFetchRequests。现在我正在查看用于构建获取请求并将其存储在模型中的 Xcode GUI。

我正在遵循 Xcode 文档中的示例。我在模型中添加了一个 Fetch Request,通过 Modeling GUI 创建的谓词是:

然后我用这两行检索该请求:

生成的 NSFetchRequest 的 NSLog 输出以下内容:

.. 这表明在返回存储的 FetchRequest 之前变量没有被替换。

那么,如何指定在 Xcode Data Modeling Fetch Request Predicate Builder GUI 中输入的文本在运行时被 NSFetchRequest:fetchRequestFromTemplateWithName:substitutionVariables: 替换?

谢谢!

伍迪

0 投票
1 回答
603 浏览

cocoa - NSPredicateEditor 只是不会出现

我有一个非常奇怪的问题。我正在尝试使用 IB 将 NSPredicateEditor 放入我的界面,当我构建应用程序时,它只是显示为一个空的灰色矩形。这没有我对默认值应用任何更改,包括不修改默认模板。可能会发生什么?

0 投票
1 回答
132 浏览

objective-c - NSPredicateEditor 查询不起作用

我的 NSPredicateEditor 有问题。我想用它来过滤字典数组。

NSArray 事件 = {(Stadt=>Berlin), (Stadt=>Munich), nil }

以下代码正在工作:

NSLog 结果是: Stadt LIKE "Berlin"

如果我从 NSPredicateEditor 获得谓词,我会得到相同的 NSLog 结果,但结果数组(事件)为空!

代码:

谢谢, 安德烈亚斯