Domanda

Ho ottenuto quello che si spera sia una semplice domanda - ho due entità - List e ListItem - e c'è una relazione uno-a-molti istituire tra loro, tutto bene.

Il mio problema viene quando sto cercando di eseguire un fetchrequest che restituirà i listitems sezionate da un attributo della listitem. Non è possibile eseguire un fetchrequest direttamente sugli oggetti listItem perché non c'è modo di dire 'Dove List = 'xxxxx'', così ho avuto qualcosa di simile al seguente:


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

Ora, questo errore perché è dicendo che non posso utilizzare una relazione uno-a-molti nel descrittore di sorta - ma richiede anche che ho un descrittore di sorta, quindi non sono sicuro che il modo corretto di fare Questo. Qualsiasi aiuto sarebbe grande.

È stato utile?

Soluzione

Se si vuole prendere e sezione ListItems, allora si dovrebbe utilizzare "ListItem" come entità per il recupero.

In questo caso, c'è un modo per dire "prendere tutti gli oggetti ListItem Dove Lista = 'xxxxx'", si chiama un predicato (NSPredicate).

Provare qualcosa di simile (dove "lista" è il nome della relazione ListItem con List):

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

Inoltre, vedere la Guida alla programmazione predicato .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top