使用 ANY 和两个条件创建 NSPredicate

Posted

技术标签:

【中文标题】使用 ANY 和两个条件创建 NSPredicate【英文标题】:Create NSPredicate with ANY and two conditions for it 【发布时间】:2021-06-25 07:48:55 【问题描述】:

我只有两个实体:ProductItem。产品可能有很多items:Set<Item>Item 有两个属性:isActiveidentifier

现在我需要获取至少有一个Item 同时满足以下条件的所有产品:

identifier IN %@ //["1", "2"]

isActive = true

  let format = "ANY (items.identifier IN %@ AND items.isActive = true)"
  let predicate = NSPredicate(format: format, ["1", "2"])

但我遇到了异常:Unable to parse the format ...

为什么?

【问题讨论】:

【参考方案1】:

你可以试试这个-

let format = "SUBQUERY(items, $item, $item.identifier IN %@ AND $item.isActive = true).@count > 0"
let predicate = NSPredicate(format: format, ["1", "2"])

来源:NSPredicate Cheatsheet

【讨论】:

让我们现在试试吧;)

以上是关于使用 ANY 和两个条件创建 NSPredicate的主要内容,如果未能解决你的问题,请参考以下文章

NSPredicate 格式问题

如何将 SQL 比较条件 ANY/SOME 与 DATATYPE Char 一起使用

C# Any()和AII()方法

使用 .any() 后使用 np.where 返回错误 [重复]

Postgres数据库使用any和all判断数组解决IN和NOT IN条件参数超限的问题

Postgres数据库使用any和all判断数组解决IN和NOT IN条件参数超限的问题