NSPredicate:搜索相关的值数组,NOT



我有点迷路了,希望你能帮助我。

我有两个阵列

let stars = ["Paul", "Ringo"]
let visitors = ["bob", "mary"]

然后我有核心数据实体RockstarPerson。以及两者之间的一对多关系粉丝

现在我想找几个特定的摇滚明星,并确保他们没有访客作为粉丝。

我试着用一个复合谓词来做到这一点,大致如下:

let starsPredicate = NSPredicate(format: "id IN %@", stars)
let fansPredicate = NSPredicate(format: "NOT (fans.personid CONTAINS %@)", visitors)

最后是

let compoundPredicate = NSCompoundPredicate(andPredicateWithSubpredicates: [starsPredicate, fansPredicate])

恐怕这会导致两个问题:

  1. 风扇预测的正确语法是什么?它使用一个值可以很好地工作,但它在阵列上崩溃

  2. 这在复合谓词中可能吗?我认为如果Person实体为空,那么我从compoundPredicate中得到零条记录。

这可以通过"SUBQUERY"实现:

let fansPredicate = NSPredicate(format: "SUBQUERY(fans, $f, $f.personid IN %@).@count = 0",
visitors)

谓词对于没有相关的Person对象(其personId在给定列表中(的所有Rockstar对象均为true。

相关内容

最新更新