Filtro NSPnetworkingicate para relaciones de muchos a muchos.

Todavía soy bastante nuevo en el uso de NSPnetworkingicate, pero tengo un problema algo complicado y no estoy muy seguro de la mejor manera de hacer una solución.

Estoy intentando build un filter para una entidad llamada Instrument, que puede usarse con muchos Procedimientos. Los procedimientos, a su vez, están relacionados con una o más Enfermedades. Las enfermedades están relacionadas con muchos Procedimientos, y los Instrumentos se pueden usar en más de un Procedimiento. En otras palabras, tengo la siguiente relación de muchos a muchos:

Instruments <-> Procedures <-> Diseases 

Lo que me gustaría hacer es filtrar instrumentos usando Disease.title. En un mundo simple y mágico, esto sería tan simple como

 //where pnetworkingicate is used on the Instruments array [NSPnetworkingicate pnetworkingicateWithFormat:@"(procedures.diseases.title == %@)", diseaseTitleString]; 

Pasando esta pieza por pieza (con algunos errores tipocharts y errores), descubrí que el filter conoce los campos de Procedimientos y Enfermedades lo suficiente como para decirme que "diseaseTypes" no es un campo de procedimientos, y que "nombre" no es un campo en las enfermedades La ingenuidad me llevó a la esperanza de que este simple pnetworkingicado funcionara.

No tengo nada

También he intentado usar (ALL procedures.diseases.title == %@) , pero eso tampoco funciona.

He visto algunas cosas sobre los sub-pnetworkingicados, pero nada que realmente me resulte algo que funciona o tiene mucho sentido para mí.

Básicamente quiero get la list:

 NSArray *instruments = [[NSArray alloc] init]; for (Disease *disease in Diseases) { if ([disease.title isEqualToString:titleString]) { for (Procedure *procedure in disease.procedures) { for (Instrument *instrument in procedure.instruments) { if (![instruments containsObject:instrument]) { [instruments addObject:instrument]; } } } } } 

En este momento, estoy usando este método para get una matriz que puedo filtrar basada en otros pnetworkingicados, y está funcionando bien, pero es fea y siento que hay una mejor y más limpia manera de filtrar esto. ¿Alguien puede ayudarme a educarme sobre los mejores usos del layout de NSPnetworkingicate?

Sobre el pnetworkingicado que tienes arriba, reemplaza los dobles equals con uno solo equals. Agregue también una cláusula "CUALQUIER". Finalmente, elimine los paréntesis. Entonces tendrás:

 [NSPnetworkingicate pnetworkingicateWithFormat:@"ANY procedures.diseases.title = %@", diseaseTitleString]; 

En general, encuentro una buena manera de manejar pnetworkingicados complejos es buildlos usando sub-pnetworkingicados.

Entonces, comienzas con:

  NSMutableArray *subpnetworkingicates = [NSMutableArray array]; 

Luego, poco a poco, agrega sus subpnetworkingicados:

 [subpnetworkingicates addObject: [NSPnetworkingicate pnetworkingicateWithFormat:@"ANY procedures.diseases.title = %@", diseaseTitleString]] [subpnetworkingicates addObject:anotherPnetworkingicate etc]; 

Finalmente, cree su "y" o "o" pnetworkingicado, por ejemplo:

  NSPnetworkingicate *andPnetworkingicate = [NSCompoundPnetworkingicate andPnetworkingicateWithSubpnetworkingicates:subpnetworkingicates];