Crea NSCompoundPredicate complicado en Swift 3

Quiero crear un complicadoNSCompoundPredicate en swift 3, sin embargo, no sé cómo hacer esto.

Supongamos que tengo 5 predicados (p1, p2, p3, p4, p5). Quiero implementar las siguientes condiciones:

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 como su segundo argumento obtiene una variedad de NSPredicates que no desea. ¿Cuál es la mejor solución?

Respuestas a la pregunta(1)

Su respuesta a la pregunta