поэтому вы можете передать составные предикаты, созданные на первых этапах, как субпредикаты другому составному предикату:

у создать сложныйNSCompoundPredicate однако в swift 3 я не знаю, как это сделать.

Предположим, у меня есть 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

NSCompoundPredicate поскольку это второй аргумент, он получает массив NSPredicates, которые ему не нужны. Какое лучшее решение?

Ответы на вопрос(1)

Решение Вопроса

NSCompoundPredicate наследует отNSPredicateпоэтому вы можете передать составные предикаты, созданные на первых этапах, как субпредикаты другому составному предикату:

 .and, subpredicates: [p1, p2, p3])
let compound2 = NSCompoundPredicate(type: .and, subpredicates: [p4, p5])
let compound3 = NSCompoundPredicate(type: .or, subpredicates: [compound1, compound2])

fetchRequest.predicate = compound3

Ваш ответ на вопрос