如何在 NSPredicate 中定义临时变量?

Posted

技术标签:

【中文标题】如何在 NSPredicate 中定义临时变量?【英文标题】:How to define temporary variable inside NSPredicate? 【发布时间】:2014-10-04 21:10:48 【问题描述】:

我需要一个几乎像这样的谓词:

let frOU = NSFetchRequest(entityName: "OU")
frOU.predicate = NSPredicate(format: "IN o.ous.recordName = %@ AND IN o.ous.checkedOut = true", "123")

但重要的是这两个条件匹配相同的OU 托管对象。怎么写?

类似于"$(o.ous) IN ($0.recordName = %@ AND $0.checkedOut = true)" 但使用正确的语法,是否可以使用核心数据?

【问题讨论】:

【参考方案1】:

这可以通过一个 SUBQUERY 来完成,例如

NSPredicate(format: "SUBQUERY(o.ous, $x, $x.recordName = %@ AND $x.checkedOut = true).@count > 0", "123")

查找与“O”对象相关的所有“OU”对象,该对象与任何对象相关 具有给定记录名称和签出值的“OU”对象。

【讨论】:

@János:我知道的唯一 Apple 文档隐藏在 NSExpression 类参考中。还有一些 SO 答案演示了使用或 SUBQUERY。这个***.com/questions/3810992/… 也可能有用。

以上是关于如何在 NSPredicate 中定义临时变量?的主要内容,如果未能解决你的问题,请参考以下文章

ORACLE 临时表空间管理

临时子表达式的临时生命周期,绑定到引用

pc临时调起QQ临时会话

机器C盘临时区

替换 NSPredicate 中的变量

选择排序