Ami*_*ani 2 core-data nspredicate nscompoundpredicate swift
我想在swift 3中创建一个复杂的NSCompoundPredicate,但是,我不知道如何做到这一点.
假设我有5个谓词(p1,p2,p3,p4,p5).我想实现以下条件:
compound1 = (p1 AND p2 AND p3) // NSCompoundPredicate(type: .and,
//subpredicates: predicates)
compound2 = (p4 AND p5) // NSCompoundPredicate(type: .and,
//subpredicates: predicates)
compound3 = (compound1 OR compound2) // problem is here
fetchRequest.predicate = compound3
Run Code Online (Sandbox Code Playgroud)
NSCompoundPredicate因为它的第二个参数获得了它不想要的NSPredicates数组.什么是最好的解决方案?
NSCompoundPredicate继承自NSPredicate,因此您可以将复合谓词创建的第一步作为subpredicate传递给另一个复合谓词:
let compound1 = NSCompoundPredicate(type: .and, subpredicates: [p1, p2, p3])
let compound2 = NSCompoundPredicate(type: .and, subpredicates: [p4, p5])
let compound3 = NSCompoundPredicate(type: .or, subpredicates: [compound1, compound2])
fetchRequest.predicate = compound3
Run Code Online (Sandbox Code Playgroud)