ios NSFetchRequest, ordere objects secundarios

Hola, quisiera saber cómo especificar una FetchRequest donde puedo orderar los objects en una relación.

| Parent | | Child | | - name |------->| - name | | - position | | - position | 

Por ejemplo, si tengo una tabla padre que contiene un atributo de position y tiene una relación de uno a muchos con una tabla secundaria que tiene a también tiene un atributo de position. ¿Cómo devuelvo los objects principales (orderados por position) que contienen los objects secundarios orderados por position.

p.ej

 parent 1 child 1 child 2 child 3 parent 2 child 15 child 16 parent 3 child 22 child 23 child 24 

Obviamente, el código siguiente orderará los objects principales correctamente, pero ¿cómo hago los objects secundarios que se devuelven con el padre para estar en el order correcto

  NSFetchRequest* fetchReqest = [[NSFetchRequest alloc] init]; NSEntityDescription* entity = [NSEntityDescription entityForName:@"parent" inManagedObjectContext:managedObjectContext]; [fetchReqest setEntity:entity]; NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"position" ascending:YES]; [fetchReqest setSortDescriptors:[NSArray arrayWithObject:sortDescriptor]]; [sortDescriptor release]; NSArray* parentsThatContainChildren = [managedObjectContext executeFetchRequest:fetchReqest error:nil]; 

Aclamaciones

Hay 2 estrategias para esto:

  1. Realice una request de búsqueda separada para los niños con el NSSortDescriptor. Pro: mantén esto en el FetchController. Con: las requestes de búsqueda múltiple pueden ralentizar
  2. Ordene los hijos devueltos en NSArray * parentsThatContainChildren.

Para el n.º 2, puede consultar esto :

 NSSortDescriptor *positionSort = [NSSortDescriptor sortDescriptorWithKey:@"position" ascending:YES]; NSArray *children = [[parent.children allObjects] sortedArrayUsingDescriptors:[NSArray arrayWithObject:positionSort]];