2009-11-25 6 views
4

afetr insérer un nouvel enregistrement dans mon magasin CoreData en utilisant un NSFetchedResultsController, lorsque je tente ensuite d'afficher les données dans un regroupées uitableview les application se bloque avec l'erreur suivante »NSFetchedResultsController ERREUR:

NSFetchedResultsController ERROR: The fetched object at index 5 has an out of order section name 'Navigation. Objects must be sorted by section name' 

J'ai ajouté la . section valeur clé des sortDescriptors, mais il ne permet pas Voici mon code:

- (NSFetchedResultsController *)fetchedResultsController { 

if (fetchedResultsController != nil) { 
    return fetchedResultsController; 
} 

/* 
Set up the fetched results controller. 
*/ 
// Create the fetch request for the entity. 
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
// Edit the entity name as appropriate. 
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Item" inManagedObjectContext:managedObjectContext]; 
[fetchRequest setEntity:entity]; 

// Set the batch size to a suitable number. 
[fetchRequest setFetchBatchSize:20]; 

// Edit the sort key as appropriate. 
NSSortDescriptor *sortByGroupName = [[NSSortDescriptor alloc] initWithKey:@"group.groupName" ascending:NO]; 
NSSortDescriptor *sortByIsMandatory = [[NSSortDescriptor alloc] initWithKey:@"isMandatory" ascending:NO]; 
NSSortDescriptor *sortByItemName = [[NSSortDescriptor alloc] initWithKey:@"itemName" ascending:NO]; 
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortByGroupName, sortByIsMandatory, sortByItemName, nil]; 

[fetchRequest setSortDescriptors:sortDescriptors]; 

// Edit the section name key path and cache name if appropriate. 
// nil for section name key path means "no sections". 
NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:managedObjectContext sectionNameKeyPath:@"group.groupName" cacheName:@"Root"]; 
aFetchedResultsController.delegate = self; 
self.fetchedResultsController = aFetchedResultsController; 

[aFetchedResultsController release]; 
[fetchRequest release]; 
[sortDescriptors release]; 
[sortDescriptors release]; 

return fetchedResultsController; 

}

Qu'est-ce que je manque ici

Merci -

Jk

Répondre

2

Doh! Trouvé mon problème: j'ai sur-publié le sortDescriptors

0

Mais vous fuyez les sortDescriptors individuels sortByGroupName, et ainsi de suite. Vous devriez aussi les libérer.

Questions connexes