8

Sto utilizzando NSFetchedResultsController per gestire i dati per il mio UITableViewController. Una versione semplificata del oggetto gestito Io sono il recupero si presenta così (bene per esempio):Creazione di sezioni di tabella con NSFetchedResultsController

Person: 
-(BOOL)hasPet; 
-(BOOL)hasDog; 

Fondamentalmente, voglio che il mio tavolo per mostrare solo quei Person oggetti che hanno un animale domestico. Quindi è semplice, posso usare un predicato. Ora, per coloro che hasPet == YES, voglio metterli nella tabella in 2 sezioni, prima sezione hasDog == YES, e il secondo è hasDog == NO. Questo è dove sono un po 'confuso. Qui è dove configuro il mio controller dei risultati, si spera che qualcuno possa aiutarmi a orientarmi nella giusta direzione.

- (NSFetchedResultsController *)fetchedResultsController { 
if (nil != fetchedResultsController) { 
    return fetchedResultsController; 
} 

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Homework" inManagedObjectContext:managedObjectContext]; 
[fetchRequest setEntity:entity]; 

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"hasPet == %@", [NSNumber numberWithBool:YES]]; 
[fetchRequest setPredicate:predicate]; 

NSSortDescriptor *dogDescriptor = [[NSSortDescriptor alloc] initWithKey:@"hasDog" ascending:YES]; 
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES]; 
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:dogDescriptor, sortDescriptor, nil]; 

[fetchRequest setSortDescriptors:sortDescriptors]; 

NSFetchedResultsController *aController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:managedObjectContext sectionNameKeyPath:nil cacheName:nil]; 
aController.delegate = self; 
self.fetchedResultsController = aController; 

    // Release things 

return fetchedResultsController; 
} 

È un descrittore di ordinamento in cui devo focalizzare la mia attenzione?

risposta

15

È semplice! Basta fornire il NSFetchedResultsController con un sectionNameKeyPath (che in questo caso sarebbe hasDog) nel suo inizializzatore.

L'unico avvertimento a questo, tuttavia, è i nomi delle sezioni saranno 0 & 1 rispettivamente, ma è facilmente curabile.

Problemi correlati