2010-06-19 8 views
0

J'ai deux entités: Department et DepartmentNews. Chaque département a un ou plusieurs objets DepartmentNews. À l'intérieur de DepartmentNews, il y a un attribut newsTitle, et il y a un attribut releaseDate.Données de base: Comment récupérer ces objets gérés?

Je veux récupérer tous ces objets Department et les trier par leur newsNews DepartmentNews associé avec le dernier releaseDate.

Est-il possible de créer un prédicat pour cela? Probablement avec des sous-requêtes? Comment pourrait-on faire quelque chose comme ça? J'utilise le contrôleur NSFetchedResultsController ...

Répondre

2

Votre requête n'a aucun sens. Parce qu'un département a plus d'un objet de nouvelles de département, vous ne pouvez pas trier tous les objets. Vous pouvez mettre en place un tri par un d'entre eux, mais vous auriez besoin de déterminer lequel.

Donc d'abord définir quel un de ces nouvelles que vous voulez trier par et ensuite vous pouvez construire le reste.

1

Que pensez-vous de la récupération des départements, puis utilisez un chemin de clé pour le descripteur de tri. J'essaie de coder cette place:

NSFetchRequest *allDepartements = [[NSFetchRequest alloc] init]; 
[allDepartements setEntity:[NSEntityDescription entityForName:@"departements" 
inManagedObjectContext:moc]]; 
// now specify the sorting 
NSSortDescriptor *sortDesc = [[NSSortDescriptor alloc] initWithKey:@"departementNews.date"] ascending:YES]; 
[allDepartements setSortDescriptors:[NSArray arrayWithObject:sortDesc]]; 
[sortDesc release]; 
// performing the fetch without an NSFetchedResultsController 
NSError *error = nil; 
NSArray *result = [moc executeFetchRequest:allDepartements error:&error]; 
[allDepartements release]; 

Ce que vous obtenez est un tableau de la Departements triées par le plus récent de nouvelles. Vous pouvez alors simplement accéder aux informations en utilisant KVC.

Pour utiliser maintenant le NSFetchedResultsController, vous remplacez simplement le bloc lase où le fetch est exécuté et enregistré dans un tableau par ce bloc de code:

NSFetchedResultsController *controller = [[NSFetchedResultsController alloc] 
initWithFetchRequest:allDepartements 
managedObjectContext:moc 
sectionNameKeyPath:nil 
cacheName:@"<#Cache name#>"]; 
    [allDepartementsRelease]; 

Le reste devrait alors fonctionner comme prévu. Je n'ai jamais utilisé NSFetchedResultsController avant, je le code manuellement sur le mac.

+0

Je ne sais plus si le sortDescriptor fonctionne. Que pensez-vous d'aller chercher les nouvelles directement à la place? – GorillaPatch

Questions connexes