J'ai une hiérarchie de 3 objets qui a une racine comme 'Division' qui a beaucoup d'éléments 'Groupe' et chaque 'Groupe' a beaucoup de 'Employés'.Comment configurer un prédicat pour cette requête
Division [1] ------ [*] Groupe
Groupe [1] ------ [*] employé
Je voudrais savoir comment créer un NSPredicate pour rechercher tous les Employés de tous les Groupes d'une Division spécifique, triés par date/heure de création et sectionnés par leur 'Groupe' en utilisant l'objet 'Employé' comme entité de requête et connaissant l'identifiant de la Division spécifique.
Mais j'ai du mal à traduire cela en CoreData, donc toute suggestion serait utile.
je devais construire une requête SQL, ce serait quelque chose comme ceci:
select * from employé e où e.groupId dans (select * du groupe g où g.divisionId =: divisionId)
J'ai essayé, mais n'a pas fonctionné:
// Create the fetch request for the entity.
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
// Configure the request's entity and its predicate.
NSEntityDescription *entity = [NSEntityDescription
entityForName:@"Employee" inManagedObjectContext:context];
[fetchRequest setEntity:entity];
// Create the predicate
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF.groups IN %@",
[NSArray arrayWithArray:[[employee groups] allObjects]]];
[fetchRequest setPredicate:predicate];
// Edit the sort key as appropriate.
NSSortDescriptor *createDateSortDcptor = [[NSSortDescriptor alloc]
initWithKey:@"createDateTime" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc]
initWithObjects:createDateSortDcptor, nil];
[fetchRequest setSortDescriptors:sortDescriptors];
Mon objet hiérarchie est la suivante:
@interface Division : NSManagedObject
{
}
@property (nonatomic, retain) NSDate * createDateTime;
@property (nonatomic, retain) NSSet* groups;
@end
@interface Group : NSManagedObject
{
}
@property (nonatomic, retain) NSDate * createDateTime;
@property (nonatomic, retain) Division * division;
@property (nonatomic, retain) NSSet* employees;
@end
@interface Employee : NSManagedObject
{
}
@property (nonatomic, retain) NSDate * createDateTime;
@property (nonatomic, retain) NSSet* groups;
@end