问题标签 [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.
cocoa - 为多键自动生成谓词行模板?
在我的核心数据托管对象模型中,我有一个实体 Foo,它与名为 baz 的实体 Baz 具有一对多关系(具有一对多逆向)。Baz 有一个名为“tag”的字符串属性。当我使用[NSPredicateRowEditorTemplate templatesWithAttributeKeyPaths:[NSArray arrayWithObject:@"baz.tag"] inEntityDescription:FooDescription]
为 NSPredicateEditor 创建行编辑器时,结果包含(如预期的那样)一个行模板,如
[弹出:baz.tag] [弹出:包含|是|不是|...] [TextField]
当我从弹出窗口中选择“包含”时,带有谓词的查询按预期工作。如果我选择任何其他弹出窗口(例如“is”),我会收到以下错误:“此处不允许对多键”。我可以使用[NSPredicateRowEditorTemplate templatesWithAttributeKeyPaths:inEntityDescription:]
还是必须手动构建行编辑器?
cocoa - 为自动生成的谓词行模板修改 NSDatePicker
如何修改由返回的属性NSDatePickerElementFlags
的NSDatePicker
行内模板?我想显示小时:分钟以及日期。NSDate
[NSPredicateRowEditorTemplate templatesWithAttributeKeyPaths:inEntityDescription:]
NSDatePicker
更新 我在下面添加了一个答案,从 cocoa-dev 列表中收集。
objective-c - 使用 NSPredicateEditor 编辑 NSPredicate
我可以使用 NSPredicateEditor(NSRuleEditor 的子类)轻松创建 NSPredicate。我想知道的是:
如何获取现有的 NSPredicate(由编辑器创建的)并将其重新加载到编辑器中以便我可以更改它?
编辑:我尝试了@John 的使用 setObjectValue: 的建议,但这并不太奏效。让我再解释一下我的设置:
我有一个基于 Document 的 cocoa 应用程序,并且 Document 窗口上只有一个 NSPredicateEditor。在dataOfType:error:
方法中,我有:
在readFromData:ofType:error:
方法中,我有:
我已验证谓词已正确存档和取消存档,但在打开保存的谓词后,谓词未加载到谓词编辑器中。(是的,predicateEditor 连接为 IBOutlet)
cocoa - NSPredicateEditor,忽略没有搜索词的行?
我马上说我是一个没有经验的 Cocoa 程序员,如果我的问题在文档中以某种方式得到了回答,而我只是错过了它,或者我不明白 NSPredicateEditor 的工作原理,我深表歉意。但是,我确实尝试在文档中搜索并使用 Google 搜索,但收效甚微。因此,我向您提出这个问题。
我正在尝试使用 NSPredicateEditor 过滤基于核心数据的表视图。通过创建 NSCompoundPredicate,过滤工作正常,就基于各种标准的行过滤而言。但是,当谓词编辑器中的一行在其搜索字段中没有文本时,返回的 NSPredicate 类似于
...不匹配任何核心数据记录——不是我想要的。如果该行中的搜索字段为空白,则基本上我根本不希望它过滤我的数据集。
那么我的问题是,忽略谓词的这些部分的最简单/最佳解决方案是什么?我最初的想法是逐行解析 NSPredicateEditor 值(NSPredicate *)predicateForRow:(NSInteger)row
并自己重建谓词,忽略试图匹配的行""
,但这似乎不必要地麻烦。将最终的 NSCompoundPredicate 拆开- (NSArray *)subpredicates
并以这种方式进行编辑似乎也可能是我采取了错误的策略。有没有更优雅的方法来做到这一点?
*为了清楚起见,我正在考虑编辑谓词的副本,然后将其传递给我的表格视图的控制器,而不是实际编辑当前存储在 NSPredicateEditor 中的初始谓词。
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 运算符。但是,我很困惑为什么在将复合谓词传递到编辑器时会收到类似的警告。
或者
这两个都会产生与我最初的问题类似的警告。但是,我觉得奇怪的是,我可以使用单个谓词并构建复合和谓词,但我不能将预构建的复合和谓词传递到编辑器中。
objective-c - 如何将 NSPredicateEditor/NSRuleEditor 背景设置为交替行?
我已经看到一些应用程序在其谓词编辑器中使用交替行背景,但我不知道他们是如何做到的。
objective-c - NSPredicateEditorRowTemplate 用于日期比较
我正在构建一个NSPredicateEditor
,并且我希望能够进行高级日期比较。
我意识到我可以NSPredicateEditorRowTemplate
用rightExpressionType
of构建一个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
只有年-月-日粒度)。
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: 替换?
谢谢!
伍迪
cocoa - NSPredicateEditor 只是不会出现
我有一个非常奇怪的问题。我正在尝试使用 IB 将 NSPredicateEditor 放入我的界面,当我构建应用程序时,它只是显示为一个空的灰色矩形。这没有我对默认值应用任何更改,包括不修改默认模板。可能会发生什么?
objective-c - NSPredicateEditor 查询不起作用
我的 NSPredicateEditor 有问题。我想用它来过滤字典数组。
NSArray 事件 = {(Stadt=>Berlin), (Stadt=>Munich), nil }
以下代码正在工作:
NSLog 结果是: Stadt LIKE "Berlin"
如果我从 NSPredicateEditor 获得谓词,我会得到相同的 NSLog 结果,但结果数组(事件)为空!
代码:
谢谢, 安德烈亚斯