编辑:忘了提一下,之后我会在Swift代码中过滤掉不需要颜色的卡片。
因此,这是另一个有关核心数据中的多个关系以及如何为其编写谓词的问题。简而言之,我想以一对多关系匹配多个项目的组合。
搜索具有黑色和/或白色的卡,即:
最佳结果是(简体):
NSPredicate(format: "ANY color == Black") // Only black cards, good
NSPredicate(format: "ANY color == White") // Only white cards, good
NSPredicate(format: "ANY color == Black OR ANY color == White") // Only black AND white cards, bad
这里有一个与MySQL非常相似的帖子,以防它进一步澄清问题:
答案 0 :(得分:1)
基于@pbasdf的评论,我提出了以下解决方案(在实际代码中具有更好的语法):
// Desired colors
let includePredicate = NSPredicate(format: “SUBQUERY(color, $C, $C == 'Black' OR $C == 'White').@count > 0”)
// Undesired colors
let excludePredicate = NSPredicate(format: “SUBQUERY(color, $C, $C == 'Green' OR $C == 'Red' OR $C == 'Blue').@count == 0”)
// Combined to one predicate
let finalPredicate = NSCompoundPredicate(andPredicateWithSubpredicates: [includePredicate, excludePredicate]