为了让那些有两种类型的控制台,你需要“和”他们。你需要“或”他们在一起,如果想要那些有选择的,还有。如果你“和”他们你必须有两个或它不会被包括在内,如果你是“或者”他们,如果存在的话,它将被包括在内。
所以你需要创建一个复合“或”谓词。您为每个要包含的案例创建一个谓词,然后使用复合谓词将所有谓词“或”[或“和”]结合在一起。
我根据上面提供的内容做了一些猜测,但这应该非常接近。让我知道是否需要澄清或清理。它编译,但我没有为它创建一个测试数据集。用尖括号>内的<变量替换变量名称(用于领域对象)和类名称。
let selectedConsoles = ["Xbox", "Playstation 4"]
let predicateOne = NSPredicate(format:"consoles IN %@", [selectedConsoles[0]])
let predicateTwo = NSPredicate(format:"consoles IN %@", [selectedConsoles[1]])
let compoundPredicateEitherConsole = NSCompoundPredicate(orPredicateWithSubpredicates: [predicateOne, predicateTwo])
let compoundPredicateBothConsoles = NSCompoundPredicate(andPredicateWithSubpredicates: [predicateOne, predicateTwo])
let results = <realm>.objects(<YourClassName>.self).filter(compoundPredicateEitherConsole)
谢谢我只是做了几乎相同的事情,它没有工作,我发现NSCompoundPredicate有LogicalType .and。其余的很容易做出CompoundPredicate – ivan123
非常好!很高兴你解决了它!很容易忘记NSCompoundPredicate可用。它在您需要时派上用场。 – Mozahler