Question

J'ai ce qui est, espérons une simple question - j'ai deux entités - Liste et ListItem - et il y a un à plusieurs rapports mis en place entre eux, tout bon.

Mon problème vient quand je suis en train d'effectuer une fetchrequest qui retournera les listitems sectionnés par un attribut de la listitem. Je ne peux pas effectuer une fetchrequest directement sur les objets listItem parce qu'il n'y a aucun moyen de dire « Où List = « XXXXX » », donc j'avais quelque chose comme ce qui suit:


- (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;
}

Maintenant, cette erreur parce qu'il dit que je ne peux pas utiliser un à plusieurs dans le descripteur de tri - mais il faut aussi que j'ai un descripteur de tri, donc je ne suis pas sûr de la bonne façon à faire cette. Toute aide serait grande.

Était-ce utile?

La solution

Si vous voulez chercher et la section ListItems, alors vous devriez utiliser « ListItem » comme entité pour le chercher.

Dans ce cas, il y a une façon de dire « chercher tous les objets ListItem Où List = « XXXXX » », il est appelé un prédicat (NSPredicate).

Essayez quelque chose comme ça (où « liste » est le nom de la relation ListItem avec liste):

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

En outre, voir le prédicats Guide de programmation .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top