NSPredicate:搜索相关值的数组,NOT
NSPredicate: search for an array of values in relation, NOT
我有点迷茫,希望你能帮助我。
我有两个数组
let stars = ["Paul", "Ringo"]
let visitors = ["bob", "mary"]
然后我有核心数据实体 Rockstar 和 Person。以及两者之间的一对多关系 fans.
现在我想找到几个特定的 Rockstar,并确保他们没有访客作为粉丝。
我尝试用复合谓词来做到这一点,大致如下:
let starsPredicate = NSPredicate(format: "id IN %@", stars)
let fansPredicate = NSPredicate(format: "NOT (fans.personid CONTAINS %@)", visitors)
最后
let compoundPredicate = NSCompoundPredicate(andPredicateWithSubpredicates: [starsPredicate, fansPredicate])
恐怕这会导致两个问题:
fansPredicate 的正确语法是什么?它可以很好地处理一个值,但它会在数组
上崩溃
复合谓词是否可能?我想如果 Person 实体是空的,我从 compoundPredicate 得到零条记录。
这可以通过“子查询”来实现:
let fansPredicate = NSPredicate(format: "SUBQUERY(fans, $f, $f.personid IN %@).@count = 0",
visitors)
谓词对于所有 Rockstar 对象都为真,这些对象没有相关的 Person 对象,其 personId
在给定列表中.
我有点迷茫,希望你能帮助我。
我有两个数组
let stars = ["Paul", "Ringo"]
let visitors = ["bob", "mary"]
然后我有核心数据实体 Rockstar 和 Person。以及两者之间的一对多关系 fans.
现在我想找到几个特定的 Rockstar,并确保他们没有访客作为粉丝。
我尝试用复合谓词来做到这一点,大致如下:
let starsPredicate = NSPredicate(format: "id IN %@", stars)
let fansPredicate = NSPredicate(format: "NOT (fans.personid CONTAINS %@)", visitors)
最后
let compoundPredicate = NSCompoundPredicate(andPredicateWithSubpredicates: [starsPredicate, fansPredicate])
恐怕这会导致两个问题:
fansPredicate 的正确语法是什么?它可以很好地处理一个值,但它会在数组
上崩溃复合谓词是否可能?我想如果 Person 实体是空的,我从 compoundPredicate 得到零条记录。
这可以通过“子查询”来实现:
let fansPredicate = NSPredicate(format: "SUBQUERY(fans, $f, $f.personid IN %@).@count = 0",
visitors)
谓词对于所有 Rockstar 对象都为真,这些对象没有相关的 Person 对象,其 personId
在给定列表中.