2009-11-25 4 views
1

J'ai un modèle People et un groupe de modèles, People a un champ de type Group. Comment je peux calculer le nombre de groupe dans le magasin de personnes? Personnes: {name: Mark, groupe: linktoGroup1}, {name: John, groupe: linktoGroup2}, {nom: Mike, groupe: linktoGroup2}, {name: Jane, groupe: linktoGroup1} Ce groupe aura 2 groupes à tout.Nombre de données de base du champ uniq

Répondre

1

Compte tenu NSSet *setOfPeople,

[setOfPeople valueForKeyPath:@"@distinctUnionOfObjects.group"].count; 

est la valeur de la clé de codage façon de le faire. S'il y a un beaucoup des personnes ou des groupes, il peut être plus rapide de laisser le moteur de recherche SQLite faire (en supposant que vous utilisez un back-end SQLite) ...

Dans une requête de données de base, il est plus facile si il existe une relation inverse (to-many) du groupe aux personnes. Ainsi, si la relation inverse de People.group est Group.people et vous avez une initialisation NSManagedObjectContext *managedObjectContext]:

NSFetchRequest *fetch = [[NSFetchRequest alloc] init]; 
[fetch setEntity:[NSEntityDescription entityForName:@"Group" inManagedObjectContext:managedObjectContext]]; 
[fetch setPredicate:[NSPredicate predicateWithFormat:@"ANY people IN %@", setOfPeople]]; 

NSError *err; 
NSUIntetger groupCount = [managedObjectContext countForFetchRequest:fetch error:&err]; 
Questions connexes