Pergunta

Eu estou usando NSFetchedResultsController para conduzir os dados para o meu UITableViewController. Uma versão simplificada do objeto gerenciado Estou olhares Buscando assim (bem, por exemplo):

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

Basicamente, eu quero a minha tabela para mostrar somente aqueles Person objetos que têm um animal de estimação. Então, isso é simples, eu posso usar um predicado. Agora, para aqueles que hasPet == YES, quero colocá-los na tabela em 2 secções, primeiro hasDog == YES seção, eo segundo é hasDog == NO. Aqui é onde eu estou um pouco confuso. Aqui é onde eu configurar meu controlador resultados, espero que alguém pode ajudar a orientar-me na direção certa.

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

é um descritor de tipo onde eu preciso estar focando minha atenção?

Foi útil?

Solução

É simples! Basta fornecer o NSFetchedResultsController com um sectionNameKeyPath (que neste caso seria hasDog) em seu inicializador.

A única ressalva a esta, no entanto, é os nomes de seção será 0 & 1 respectivamente, mas é facilmente curável.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top