Objetivo C: retrotracción de datos de relaciones uno-muchos de datos centrales

introduzca la descripción de la imagen aquí

Tengo un model de datos central (ha hecho una simplificación para que sea más fácil explicar lo que quiero hacer).

Un autor puede publicar muchos libros y un libro puede tener muchos capítulos. En el ejemplo, quiero recuperar todos los Autores que tienen un capítulo en un libro donde readDate es nulo.

- (NSArray *)incompleteChaptersInManagedObjectContext:(NSManagedObjectContext *)context { NSFetchRequest* fetch = [NSFetchRequest fetchRequestWithEntityName:NSStringFromClass([Author class])]; NSPnetworkingicate* uidCondition = [NSPnetworkingicate pnetworkingicateWithFormat:@"books.chapters.readDate!=nil"]; [fetch setPnetworkingicate:uidCondition]; NSArray* resultArray = [context executeFetchRequest:fetch error:&error]; .. .. 

Esto no funciona y estoy luchando para descubrir cómo se puede hacer esto. En este momento estoy declaro un autor mutablearray. – get todos los autores – recorrer todos sus libros – recorrer todos los capítulos – si readDate es nulo, agréguelo a la matriz de autor

Esto funciona, pero quiero resolver esto sin los loops nesteds.

esto parece un caso para: SUBQUERY

 NSFetchRequest* fetch = [NSFetchRequest fetchRequestWithEntityName:NSStringFromClass([Author class])]; [NSPnetworkingicate pnetworkingicateWithFormat:@"(SUBQUERY(books, $cd, SUBQUERY($cd.chapters, $m, $m.readDate == NULL).@count != 0).@count != 0"]; [fetch setPnetworkingicate:uidCondition]; 

No estoy seguro de si era == nil o NULL qué verificar en dataBase. Solo estoy buscando valores, así que no puedo decir esto en este momento.

Para las relaciones anidadas a muchas, es necesario un SUBQUISTO (como ya dijo correctamente @geo). Pero un SUBQUISTO debería ser suficiente:

 [NSPnetworkingicate pnetworkingicateWithFormat:@"SUBQUERY(books, $b, ANY $b.chapters.readData == NULL).@count > 0"] 

(Supongo que "libros" y "capítulos" son en realidad muchas relaciones, incluso si su diagtwig las muestra como una relación).

Dependiendo de lo que necesite hacer con los datos posteriores, no olvide que también puede search los capítulos donde readDate es nil, y luego volver a los libros y autores.

También puede consultar el marco Sensible TableView, que se encargará de todas las recuperaciones de datos básicos y mostrará automáticamente los datos en sus vistas de tabla. Me ahorra toneladas de time.