核心数据唯一字段的计数

时间:2009-11-25 19:25:26

标签: core-data

我有模型People和model Group,People有类型Group的字段。我如何计算人民商店的团体数量? 人民:{名称:马克,组:linktoGroup1},{名字:约翰,组:linktoGroup2},{名称:迈克,组:linktoGroup2},{名称:简,组:linktoGroup1} 这个人将有2个小组。

1 个答案:

答案 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];