iPhone coredata petición de recuperación, conceptos básicos en torno a las relaciones y las secciones

StackOverflow https://stackoverflow.com/questions/1749316

Pregunta

Tengo lo que es de esperar que una simple pregunta - Tengo dos entidades - Lista y ListItem - y hay una relación uno-a-muchos establecido entre ellos, todo bien.

Mi problema viene cuando estoy tratando de realizar una fetchrequest que devolverá los ListItems seccionados por un atributo de la listitem. No es posible realizar un fetchrequest directamente sobre los objetos ListItem porque no hay manera de decir '¿Dónde Lista = 'xxxxx'', así que tuve algo como lo siguiente:


- (NSFetchedResultsController *)getListItems {
    // Init a fetch request
    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"List" inManagedObjectContext:self.managedObjectContext];
    [fetchRequest setEntity:entity];

    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"listItem.productName" ascending:YES selector:nil];
    NSArray *descriptors = [NSArray arrayWithObject:sortDescriptor];
    [fetchRequest setSortDescriptors:descriptors];


    // Init the fetched results controller
    NSError *error;
    self.globalFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:@"listItem.productName" cacheName:@"listItems"];
    self.globalFetchedResultsController.delegate = self;
    if (![[self globalFetchedResultsController] performFetch:&error])   NSLog(@"Error: %@", [error localizedDescription]);

    [fetchRequest release];
    [sortDescriptor release];

    return self.globalFetchedResultsController;
}

Ahora, esta errores porque está diciendo que no puedo utilizar una relación de uno a muchos en el descriptor de tipo - pero también requiere que tengo un descriptor de clase, así que no estoy seguro de la forma correcta de estar haciendo esta. Cualquier ayuda sería grande.

¿Fue útil?

Solución

Si se desea obtener y de la sección ListItems, entonces usted debe utilizar "ListItem" como su entidad para la obtención de información.

En este caso, no es una forma de decir "ir a buscar todos los objetos ListItem Dónde Lista = 'xxxxx'", se llama un predicado (NSPredicate).

Trate algo como esto (donde "lista" es el nombre de la relación con la lista ListItem):

NSPredicate *pred = [NSPredicate predicateWithFormat:@"list == %@", listObject];
[fetchRequest setPredicate:pred];

Además, vea la predicado Guía de programación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top