我有模型People和model Group,People有类型Group的字段。我如何计算人民商店的团体数量? 人民:{名称:马克,组:linktoGroup1},{名字:约翰,组:linktoGroup2},{名称:迈克,组:linktoGroup2},{名称:简,组:linktoGroup1} 这个人将有2个小组。
答案 0 :(得分:1)
给定NSSet *setOfPeople
,
[setOfPeople valueForKeyPath:@"@distinctUnionOfObjects.group"].count;
是实现它的键值编码方式。如果有人或组的批次,让SQLite查询引擎执行此操作可能会更快(假设您使用的是SQLite后端)...
在Core Data查询中,如果从Group到People之间存在反向(to-many)关系,则最简单。因此,如果People.group
的反比关系为Group.people
并且您已初始化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];